• Daz 3D
  • Shop
  • 3D Software
    • Daz Studio Premier
    • Daz Studio
    • Install Manager
    • Exporters
    • Daz to Roblox
    • Daz to Maya
    • Daz to Blender
    • Daz to Unreal
    • Daz to Unity
    • Daz to 3ds Max
    • Daz to Cinema 4D
  • 3D Models
    • Genesis 9
    • Genesis 8.1
    • Free 3D Models
    • Game Ready
  • Community
    • Gallery
    • Forums
    • Blog
    • Press
    • Help
  • Memberships
    • Daz Premier
    • Daz Plus
    • Daz Base
    • Compare
  • AI Solutions
  • Download Studio
  • Menu
  • Daz 3D
  • Shop
  • 3d Software
    • Daz Studio Premier
    • Daz Studio
    • Install Manager
    • Exporters
    • Daz to Roblox
    • Daz to Maya
    • Daz to Blender
    • Daz to Unreal
    • Daz to Unity
    • Daz to 3ds Max
    • Daz to Cinema 4D
  • 3D Models
    • Genesis 9
    • Genesis 8.1
    • Free 3D Models
  • Community
    • Our Community
    • Gallery
    • Forums
    • Blog
    • Press
    • Help
  • Memberships
    • Daz Premier
    • Daz Plus
    • Daz Base
    • Compare
  • AI Solutions

Notifications

You currently have no notifications.

Loading...
Daz 3D Forums > Search
  • Trying to create a script for creating a road/highway system

    Last night, with the help of Google Gemini, I have a script created to help design highways by adding straight road objects, curved road objects, and intersections, and even have the ability to create road shoulders and even create slopes (for hills).

    Adding a straight road section with shoulders is no problem. However, I am experiencing problems with creating a curved road section with shoulders, and the intersection should have curved shoulders on the T-intersection.

    Here is the code I have so far, in Python script:

    import bpy
    import bmesh
    import math
    import random
    from mathutils import Vector, Euler

    def get_or_create_material(mat_name):
        if mat_name not in bpy.data.materials:
            mat = bpy.data.materials.new(name=mat_name)
            mat.use_nodes = True
            bsdf = mat.node_tree.nodes["Principled BSDF"]
            if mat_name == "RoadTexture":
                bsdf.inputs['Base Color'].default_value = (0.1, 0.1, 0.1, 1)
            elif mat_name == "GravelTexture":
                bsdf.inputs['Base Color'].default_value = (0.3, 0.3, 0.3, 1)
            return mat
        return bpy.data.materials[mat_name]

    def create_straight_road(name, start_point, length, width, shoulder_width, slope, lanes):
        bm = bmesh.new()
        lane_width = width / lanes
        
        v_road_left_front = bm.verts.new((0, 0, 0))
        v_road_right_front = bm.verts.new((0, width, 0))
        v_road_left_back = bm.verts.new((length, 0, 0))
        v_road_right_back = bm.verts.new((length, width, 0))
        bm.faces.new((v_road_left_front, v_road_right_front, v_road_right_back, v_road_left_back))
        
        me_road = bpy.data.meshes.new(name + "_road_mesh")
        bm.to_mesh(me_road)
        bm.free()
        obj_road = bpy.data.objects.new(name + "_road", me_road)
        bpy.context.collection.objects.link(obj_road)

        bm_shoulders = bmesh.new()
        v_sl_front = bm_shoulders.verts.new((0, -shoulder_width, 0))
        v_sl_back = bm_shoulders.verts.new((length, -shoulder_width, 0))
        v_sl_road_back = bm_shoulders.verts.new((length, 0, 0))
        v_sl_road_front = bm_shoulders.verts.new((0, 0, 0))
        bm_shoulders.faces.new((v_sl_front, v_sl_road_front, v_sl_road_back, v_sl_back))

        v_sr_front = bm_shoulders.verts.new((0, width, 0))
        v_sr_back = bm_shoulders.verts.new((length, width, 0))
        v_sr_road_back = bm_shoulders.verts.new((length, width + shoulder_width, 0))
        v_sr_road_front = bm_shoulders.verts.new((0, width + shoulder_width, 0))
        bm_shoulders.faces.new((v_sr_front, v_sr_road_front, v_sr_road_back, v_sr_back))

        me_shoulders = bpy.data.meshes.new(name + "_shoulders_mesh")
        bm_shoulders.to_mesh(me_shoulders)
        bm_shoulders.free()
        obj_shoulders = bpy.data.objects.new(name + "_shoulders", me_shoulders)
        bpy.context.collection.objects.link(obj_shoulders)

        mat_road = get_or_create_material("RoadTexture")
        mat_gravel = get_or_create_material("GravelTexture")
        obj_road.data.materials.append(mat_road)
        obj_shoulders.data.materials.append(mat_gravel)

        obj_road.location = start_point
        obj_shoulders.location = start_point
        obj_road.rotation_euler = Euler((0, math.radians(slope), 0))
        obj_shoulders.rotation_euler = Euler((0, math.radians(slope), 0))

        return obj_road, obj_shoulders

    def create_curved_road(name, start_point, radius, angle, width, shoulder_width, segments):
        bm_road = bmesh.new()
        bm_shoulders = bmesh.new()
        
        center = (start_point[0], start_point[1] + radius, start_point[2])
        start_angle_rad = 0
        end_angle_rad = math.radians(angle)
        angle_step = (end_angle_rad - start_angle_rad) / segments
        
        prev_road_v_inner = None
        prev_road_v_outer = None
        prev_shoulder_v_inner = None
        prev_shoulder_v_outer = None
        
        for i in range(segments + 1):
            current_angle = start_angle_rad + (i * angle_step)
            
            # Calculate road vertices
            x_road_inner = center[0] + radius * math.cos(current_angle)
            y_road_inner = center[1] + radius * math.sin(current_angle)
            x_road_outer = center[0] + (radius + width) * math.cos(current_angle)
            y_road_outer = center[1] + (radius + width) * math.sin(current_angle)
            
            road_v_inner = bm_road.verts.new((x_road_inner, y_road_inner, center[2]))
            road_v_outer = bm_road.verts.new((x_road_outer, y_road_outer, center[2]))
            
            # Calculate shoulder vertices
            x_shoulder_inner = center[0] + (radius - shoulder_width) * math.cos(current_angle)
            y_shoulder_inner = center[1] + (radius - shoulder_width) * math.sin(current_angle)
            x_shoulder_outer = center[0] + (radius + width + shoulder_width) * math.cos(current_angle)
            y_shoulder_outer = center[1] + (radius + width + shoulder_width) * math.sin(current_angle)
            
            shoulder_v_inner = bm_shoulders.verts.new((x_shoulder_inner, y_shoulder_inner, center[2]))
            shoulder_v_outer = bm_shoulders.verts.new((x_shoulder_outer, y_shoulder_outer, center[2]))
            
            if i > 0:
                # Create road face
                bm_road.faces.new((road_v_inner, road_v_outer, prev_road_v_outer, prev_road_v_inner))
                
                # **FIXED:** Create inner shoulder face using only shoulder vertices
                bm_shoulders.faces.new((shoulder_v_inner, prev_shoulder_v_inner, prev_road_v_inner, road_v_inner))
                
                # **FIXED:** Create outer shoulder face using only shoulder vertices
                bm_shoulders.faces.new((road_v_outer, prev_road_v_outer, prev_shoulder_v_outer, shoulder_v_outer))
            
            prev_road_v_inner = road_v_inner
            prev_road_v_outer = road_v_outer
            prev_shoulder_v_inner = shoulder_v_inner
            prev_shoulder_v_outer = shoulder_v_outer
                
        me_road = bpy.data.meshes.new(name + "_road_mesh")
        bm_road.to_mesh(me_road)
        bm_road.free()
        obj_road = bpy.data.objects.new(name + "_road", me_road)
        bpy.context.collection.objects.link(obj_road)

        me_shoulders = bpy.data.meshes.new(name + "_shoulders_mesh")
        bm_shoulders.to_mesh(me_shoulders)
        bm_shoulders.free()
        obj_shoulders = bpy.data.objects.new(name + "_shoulders", me_shoulders)
        bpy.context.collection.objects.link(obj_shoulders)

        mat_road = get_or_create_material("RoadTexture")
        mat_gravel = get_or_create_material("GravelTexture")
        obj_road.data.materials.append(mat_road)
        obj_shoulders.data.materials.append(mat_gravel)
        
        obj_road.location = start_point
        obj_shoulders.location = start_point
        
        return obj_road, obj_shoulders

    def create_intersection(name, start_point, width, shoulder_width):
        bm_road = bmesh.new()
        size = (width + shoulder_width * 2) / 2
        v1 = bm_road.verts.new((start_point[0] - size, start_point[1] - size, start_point[2]))
        v2 = bm_road.verts.new((start_point[0] + size, start_point[1] - size, start_point[2]))
        v3 = bm_road.verts.new((start_point[0] + size, start_point[1] + size, start_point[2]))
        v4 = bm_road.verts.new((start_point[0] - size, start_point[1] + size, start_point[2]))
        bm_road.faces.new((v1, v2, v3, v4))

        me_road = bpy.data.meshes.new(name + "_mesh")
        bm_road.to_mesh(me_road)
        bm_road.free()
        obj_road = bpy.data.objects.new(name, me_road)
        bpy.context.collection.objects.link(obj_road)

        mat_road = get_or_create_material("RoadTexture")
        obj_road.data.materials.append(mat_road)
        
        return obj_road

    def get_last_road_end_point(obj):
        if obj and "Road" in obj.name:
            local_end = Vector((obj.dimensions.x, 0, 0))
            return obj.matrix_world @ local_end
        return None

    class RoadProperties(bpy.types.PropertyGroup):
        lanes: bpy.props.IntProperty(
            name="Lanes",
            description="Number of lanes",
            default=2,
            min=1,
            max=4
        )
        lane_width: bpy.props.FloatProperty(
            name="Lane Width",
            description="Width of a single lane",
            default=3.5,
            min=2.0,
            max=5.0
        )
        length: bpy.props.FloatProperty(
            name="Length",
            description="Length of the straight road",
            default=10.0,
            min=1.0,
            max=50.0
        )
        radius: bpy.props.FloatProperty(
            name="Radius",
            description="Radius of the curved road",
            default=10.0,
            min=1.0,
            max=50.0
        )
        angle: bpy.props.IntProperty(
            name="Angle",
            description="Bend angle of the curved road",
            default=90,
            min=0,
            max=180
        )
        segments: bpy.props.IntProperty(
            name="Segments",
            description="Number of faces for the curved road",
            default=20,
            min=1,
            max=100
        )
        slope: bpy.props.FloatProperty(
            name="Slope",
            description="Road incline/decline in degrees",
            default=0.0,
            min=-20.0,
            max=20.0
        )
        shoulder_width: bpy.props.FloatProperty(
            name="Shoulder Width",
            description="Width of the road shoulders",
            default=1.0,
            min=0.1,
            max=5.0
        )
        randomize: bpy.props.BoolProperty(
            name="Randomize Parameters",
            description="Randomly generate a road section",
            default=False
        )

    class CreateStraightRoadOperator(bpy.types.Operator):
        bl_idname = "object.create_straight_road"
        bl_label = "Create Straight Road"

        def execute(self, context):
            props = context.scene.road_props
            
            if props.randomize:
                props.length = random.uniform(5, 30)
                props.lanes = random.randint(1, 4)
                props.lane_width = random.uniform(3, 4)
                props.shoulder_width = random.uniform(0.5, 2.0)
                props.slope = random.uniform(-10, 10)
            
            road_width = props.lanes * props.lane_width
            
            start_point = (0, 0, 0)
            last_obj = bpy.context.view_layer.objects.active
            if last_obj and "Road" in last_obj.name:
                start_point = get_last_road_end_point(last_obj)

            create_straight_road("StraightRoad", start_point, props.length, road_width, props.shoulder_width, props.slope, props.lanes)
            return {'FINISHED'}

    class CreateCurvedRoadOperator(bpy.types.Operator):
        bl_idname = "object.create_curved_road"
        bl_label = "Create Curved Road"

        def execute(self, context):
            props = context.scene.road_props
            
            if props.randomize:
                props.radius = random.uniform(5, 30)
                props.angle = random.randint(10, 180)
                props.lanes = random.randint(1, 4)
                props.lane_width = random.uniform(3, 4)
                props.shoulder_width = random.uniform(0.5, 2.0)
                props.segments = random.randint(10, 50)
            
            road_width = props.lanes * props.lane_width
            
            start_point = (0, 0, 0)
            last_obj = bpy.context.view_layer.objects.active
            if last_obj and "Road" in last_obj.name:
                start_point = get_last_road_end_point(last_obj)

            create_curved_road("CurvedRoad", start_point, props.radius, props.angle, road_width, props.shoulder_width, props.segments)
            return {'FINISHED'}

    class CreateIntersectionOperator(bpy.types.Operator):
        bl_idname = "object.create_intersection"
        bl_label = "Create Intersection"

        def execute(self, context):
            props = context.scene.road_props
            
            if props.randomize:
                props.lanes = random.randint(1, 4)
                props.lane_width = random.uniform(3, 4)
                props.shoulder_width = random.uniform(0.5, 2.0)
                
            road_width = props.lanes * props.lane_width
            start_point = (0, 0, 0)
            
            create_intersection("Intersection", start_point, road_width, props.shoulder_width)
            return {'FINISHED'}

    class RoadGeneratorPanel(bpy.types.Panel):
        bl_label = "Road Generator"
        bl_idname = "VIEW3D_PT_road_generator"
        bl_space_type = 'VIEW_3D'
        bl_region_type = 'UI'
        bl_category = 'Create'

        def draw(self, context):
            layout = self.layout
            props = context.scene.road_props
            
            row = layout.row(align=True)
            row.prop(props, "randomize", toggle=True)

            box = layout.box()
            box.label(text="Road Parameters:")
            box.prop(props, "lanes")
            box.prop(props, "lane_width")
            box.prop(props, "length")
            
            box = layout.box()
            box.label(text="Curved Road Parameters:")
            box.prop(props, "radius")
            box.prop(props, "angle")
            box.prop(props, "segments")
            
            box = layout.box()
            box.label(text="Advanced Parameters:")
            box.prop(props, "shoulder_width")
            box.prop(props, "slope")
            
            layout.separator()
            
            layout.label(text="Create Road Section:")
            layout.operator("object.create_straight_road", text="Create Straight Road")
            layout.operator("object.create_curved_road", text="Create Curved Road")
            layout.operator("object.create_intersection", text="Create Intersection")

    def register():
        bpy.utils.register_class(RoadProperties)
        bpy.utils.register_class(RoadGeneratorPanel)
        bpy.utils.register_class(CreateStraightRoadOperator)
        bpy.utils.register_class(CreateCurvedRoadOperator)
        bpy.utils.register_class(CreateIntersectionOperator)
        bpy.types.Scene.road_props = bpy.props.PointerProperty(type=RoadProperties)

    def unregister():
        bpy.utils.unregister_class(RoadProperties)
        bpy.utils.unregister_class(RoadGeneratorPanel)
        bpy.utils.unregister_class(CreateStraightRoadOperator)
        bpy.utils.unregister_class(CreateCurvedRoadOperator)
        bpy.utils.unregister_class(CreateIntersectionOperator)
        del bpy.types.Scene.road_props

    if __name__ == "__main__":
        register()

    What can be done with regards to editing the code in order to successfully create curved roads with shoulders, and T-intersections with curved shoulders at the junction?

    By

    EightiesIsEnough EightiesIsEnough September 2025 in Blender Discussion
  • Off Topic Thread #2

    3Deedlin said:

    WendyLuvsCatz said:

    Dforce animation, the best way I found but it takes a lot of drive space

    https://www.daz3d.com/forums/discussion/428856/sagan-a-daz-studio-to-blender-alembic-exporter

    use the obj series option

    import sequenced obj by DCG 

    obviously you need the plugin installed

    Thanks. Would you say the same without dforce? I see lamh has several options. Just trying to waste less time on trial and error.

    pointless for things not Dfrorce

    LAMH a different thing entirely, the Catalyzer only loads as obj on render AFAIK and massive files so doubt doable

    you can convert to mesh on a Tposed character and try rigging it but again thats a massive file and gets distortion

    using Carrara hair with any length and density map images is the best option 

    also for Dforce, if doing short animations https://www.daz3d.com/dforce2morph is quite good but you need to save a morph for each pose and have to keyframe them so zero other frames

    By

    WendyLuvsCatz WendyLuvsCatz September 2025 in Carrara Discussion
  • Off Topic Thread #2
    WendyLuvsCatz said:

    Dforce animation, the best way I found but it takes a lot of drive space

    https://www.daz3d.com/forums/discussion/428856/sagan-a-daz-studio-to-blender-alembic-exporter

    use the obj series option

    import sequenced obj by DCG 

    obviously you need the plugin installed

    Thanks. Would you say the same without dforce? I see lamh has several options. Just trying to waste less time on trial and error.

    By

    3Deedlin 3Deedlin September 2025 in Carrara Discussion
  • Off Topic Thread #2

    Dforce animation, the best way I found but it takes a lot of drive space

    https://www.daz3d.com/forums/discussion/428856/sagan-a-daz-studio-to-blender-alembic-exporter

    use the obj series option

    import sequenced obj by DCG 

    obviously you need the plugin installed

    By

    WendyLuvsCatz WendyLuvsCatz September 2025 in Carrara Discussion
  • (SOLVED) Absolute parameters value change

    If you want to tweak the Transforms after rigging / saving the figure asset,  and make the adjustment as Default..., the quickest way (as most of the PAs do for such a fixing...) is to :

    1)  After tweaking the transforms, as you did to the crab by setting its Y Translate to 10, export it to OBJ with Base resolution;

    2) Zero Y Translate, import OBJ to create a morph named as "Fix Base". Dial it. 

    3) Adjust Rigging to Shape, the rigging will follow.  ERC Freeze on "Fix Base" property, set it as Hidden. Resave Figure Asset of the crab.

    Edit: If you need to frequently do such adjustments, always import OBJ to overwrite the "Fix Base" property  (with options in MLP : Reverse Deformations : Yes; Overwrite Exsiting: Delta Only), and repeat the above step  3).

    By

    crosswind crosswind September 2025 in Technical Help (nuts n bolts)
  • Categories not removing references? [SOLVED]

    RexRed said:

    Richard Haseltine said:

    Vendor data (the metadaat that coems with a product) User data (changes you have made youself, though vendor data can end up as userData in error various ways) are distinct. Note that the metadata files in /Runtime/Support are nopt the database, there is no link to them - they just get read in (if needed) and added to the database which is then data in a set of files in the contentcluster folder, both Vendor data and user data, so setting file permissions is acting at the wrong level.

    I agree with you about permissions being the wrong level, but Daz losing the ability to edit user data sure makes it appear like a permissions thing.

    Windows permissions can block Daz from using "any data" on the system and they can also block installation. That is a pretty wide gamut of possible issues.

    Fiddling with permissions on the PostgreSQL files can break the whole thing, or has in the past.

    Daz does assign "connections" to data or the check box would not be necessary.

    As I understand it the checkbox controls whether existing user data for a file is left alone or overwritten when importing metadata from the .dsx files on disc, it is controlling the import behaviour not setting a long-term access right (and if it was it would be a setting stored in the database, not a separate file permission). The database connects values to the relative path of the asset in question (e.g. a d?f or texture file) and other values that are, once set or imported, stored internally.

    It is not simply a reading of the user data but it is a parsing of it and a recognition that the user data belongs in the current version of Daz.

    I don't really know what is happening other than the negative effects if Daz is not permitted to reparse the user data and user data overrides the metadata process.

    By

    Richard Haseltine Richard Haseltine September 2025 in Technical Help (nuts n bolts)
  • Categories not removing references? [SOLVED]

    Richard Haseltine said:

    Vendor data (the metadaat that coems with a product) User data (changes you have made youself, though vendor data can end up as userData in error various ways) are distinct. Note that the metadata files in /Runtime/Support are nopt the database, there is no link to them - they just get read in (if needed) and added to the database which is then data in a set of files in the contentcluster folder, both Vendor data and user data, so setting file permissions is acting at the wrong level.

    I agree with you about permissions being the wrong level, but Daz losing the ability to edit user data sure makes it appear like a permissions thing.

    Windows permissions can block Daz from using "any data" on the system and they can also block installation. That is a pretty wide gamut of possible issues.

    Daz does assign "connections" to data or the check box would not be necessary.

    It is not simply a reading of the user data but it is a parsing of it and a recognition that the user data belongs in the current version of Daz.

    I don't really know what is happening other than the negative effects if Daz is not permitted to reparse the user data and user data overrides the metadata process.

    By

    EZ3DTV EZ3DTV September 2025 in Technical Help (nuts n bolts)
  • Categories not removing references? [SOLVED]

    Vendor data (the metadaat that coems with a product) User data (changes you have made youself, though vendor data can end up as userData in error various ways) are distinct. Note that the metadata files in /Runtime/Support are nopt the database, there is no link to them - they just get read in (if needed) and added to the database which is then data in a set of files in the contentcluster folder, both Vendor data and user data, so setting file permissions is acting at the wrong level.

    By

    Richard Haseltine Richard Haseltine September 2025 in Technical Help (nuts n bolts)
  • Limited Time Freebies Discussion Thread

    If some people likes to use Smart Content, the two files needed to add Smart Content for 'French Style Shabby Chic Vol 2 Kitchen' are in the archive attached to this message.

    I kept the original name, I simply deleted the almost empty 'DAZ_3D_27311_French_Style_Shabby_Chic_Vol_2__Kitchen_.dsx' file created by DIM to force Daz to create a new one, and added metadata to every item. As they are no material presets, either included or as a addon in the store, I didn't bother with creating Compatibility Bases for each of them.

    I didn't include the thumbnail so if you want one, you'll have to either create one yourself or do what I did:

    • Download the promo render with 'artistic render' written on it from the product's page: https://www.daz3d.com/french-style-shabby-chic-vol-2-kitchen
    • (Optional step) Resize it to 380x494 (it's optionnal because the render as the correct picture ratio).
    • Save it as a JPEG picture (you may have a webp picture at that point and I didn't check if Daz Studio is able to deal with them) named 'DAZ_3D_27311_French_Style_Shabby_Chic_Vol_2__Kitchen_.jpg'
    • Move it in the same directory as the dsx and dsa files
    • Move all of them inside a 'Runtime/Support' in either your 'My DAZ 3D Library' (and replace the 'DAZ_3D_27311_French_Style_Shabby_Chic_Vol_2__Kitchen_.dsx' file created by DIM), or, better, in a library not managed by DIM (My Library is perfect for that if you don't have any other library) and deleted the existing  'DAZ_3D_27311_French_Style_Shabby_Chic_Vol_2__Kitchen_.dsx' file created by DIM.

    The benefit of using a library not managed by DIM is that you'll keep the metadata file safe: in the improbable case of Daz pushing an update to such an old product, I think I read that DIM would replace the existing one.

    Then, you'll have to tell Daz Studio to install the metadata (I remember whatching a video of someone explaining how to replace the metadata included in the DIM package and ask DIM to reinstall, but in the current situation, they are no metadata files included in 

    How to install metadata?

    With the Content Library active (I’m reusing older screenshots but the text should be up-to-date):

    1. Open your Content Library, right-click on the tab to get the following menu and select Content DB Maintenance

    2. Select Re-import Metadata

    3. UNSELECT everything by unchecking User Data and All Products, to avoid overwriting existing metadata (it’ll also be much faster to only import one product metadata than your whole library…).

    4. Select ‘DAZ 3D 27311 French Style Shabby Chic Vol 2  Kitchen ’ (as announced, it’s an old screenshot done for another set of metadata) and click accept:

    Once installed, you will be able to find the kitchen in Smart Content:

    • By searching for ‘kitchen’
    • By searching for the author, by typing key::"Anima Gemini", or key::RuntimeDNA or key::"Daz Originals" (the latter being the less useful because you likely already have a lot of Daz Originals content installed).

    Or by looking into one of the categories shows on the following screenshot, which is also what you should see:

    Let me know if there is any problem.

    By

    Elor Elor September 2025 in The Commons
  • Categories not removing references? [SOLVED]

    crosswind said:

    Right ~ DO NOT export / re-import User Data.

    Also refer to: https://www.daz3d.com/forums/discussion/738831/bug-studio-stops-remembering-categories

    This issue I had is a slightly different thing than importing user data, but along a similar vein. Thanks all for your help! Much appreciated!

    By

    EZ3DTV EZ3DTV September 2025 in Technical Help (nuts n bolts)
  • Categories not removing references? [SOLVED]

    Right ~ DO NOT export / re-import User Data.

    Also refer to: https://www.daz3d.com/forums/discussion/738831/bug-studio-stops-remembering-categories

    By

    crosswind crosswind September 2025 in Technical Help (nuts n bolts)
  • Categories not removing references? [SOLVED]

    Richard Haseltine said:

    Customise or Categorise?

    I figured out the issue, Who here has not had to redo their Daz library even once?

    Well if you have many "thousands" of user assets (like I do), when you delete your Daz library and Daz's program files, the connection to Daz gets lost for your user data. So how do you fix it? Well, you rebuild your library then you rescan for metadata.

    Well the user metadata is meant for a different Daz install. They are like from different dimensions or even a different OS. Daz may detect the metadata fine but it is locked with incongruent product permissions (the only way I know how to explain this).

    Thus, Daz will display it, but it will not let you delete or customize it because it does not belong to your current Daz library, it belongs to a different Daz or different OS and Daz.

    So I went through many months trying to figure out what was wrong. Reinstalling many times just to have the problem over time resurface and not knowing why. After a fresh install of everything, all it would take was to reinstall my library or Daz, and the permissions problem was back. No amount of Windows ownerships and permissions changes would fix it other than a complete reinstall of the OS and a fresh install of the library and even that would not always fix it.

    Let me detail how this problem manifests itself.

    In the content tab at the bottom of the list of items is a folder called "categories".

    You can right click on categories and create a sub-category folder(s).

    Then you can find files that you like. You can choose from files that are part of the Daz Product library or you can choose files that are your own custom files.

    Once these files appear in the categories you can ideally, either delete the whole sub folder or remove individual references.

    You can also remove them by unchecking them in the original folder by selecting categorize in the rt click dropdown menu.

    The point is you can add and remove these files in the categorize folder singly or multiply.

    The issue I ran into is when you disconnect your user library from Daz and it needs to rebuild the library, often you will no longer be able to remove individual or multiple references in the category folder.

    They are locked. Daz will allow them to be placed into the category folder but it will not let them be removed other than by deleting the whole folder.

    It is like they are read only, locked or do not have correct native Daz product permissions.  I spend months changing Windows permissions to no avail.

    Daz would not let me edit my user contents in the folder.

    It turned out to be one check box in Daz that was the issue. Just one, lol.

    When you need to reconnect you user data back to Daz after a reinstall, (when it will not let you edit it in categories) 

    you go to Smart Content > Content DB Maintenance > Re-import Metadata

    You will see, the box pictured below.

    If you check the box, "User Data Overrides Product Data" it will import your user data with its own permissions and old disconnected Daz product associations. Or it imports no product data.

    This can result in Daz not having the right permissions to fully connect with the user data.

    Instead, uncheck the box and Daz will build brand new metadata product connections to the old user data and it will then work again in categories.
    Problem "SOLVED".

    By

    EZ3DTV EZ3DTV September 2025 in Technical Help (nuts n bolts)
  • DIM operation

    DS does not care about absolute paths, only relative paths (except for Custom Actions). However, you will need either to put the database on the removable drive too or reimport metadata - and Connect (though Daz Studio) instalaltions cannot be reimported.

    DIM, on the other hand, does use absilute paths in its manifests (the way it tracks what was installed) so if you are also sharing its files you will need to use the same frive letter for both machines..

    By

    Richard Haseltine Richard Haseltine September 2025 in The Commons
  • Daz Studio 6 Beta - version 6.25.2026.14722! (Updated May 28, 2026)

      Okay, talk about your basic, "One step forward, two steps back".
    On the Mac, the new version 6.25.2025.26119 (September 19, 2025):

    • Fixed an issue with the selection of composite keys in the Timeline pane dopesheet view

    Hooray! Yes, a step forward!

    HOWEVER, now I can't import my audio files, something that's worked since the very first ALPH (but hasn't for a decade in the 4.xx.xx versions). I can *see* the .wav files in the selection box, but they're all greyed out.

    Is it enough to list this here, or do I need to report it somewhere else?

     

    By

    wsterdan wsterdan September 2025 in Daz Studio Discussion
  • DIM operation

    So I installed content on a local drive but want to move it to an external drive so I can share it between two different computers. Will I loose all of the metadata/smart content If I do that? (I used to know a lot more about this than I do now, but take a decade off and you forget a lot, besides what might have changed over that time...)

    By

    Joe.Cotter Joe.Cotter September 2025 in The Commons
  • Velvet Ropes Freebie

    I attached the archive (it'll have a gibberish name, once downloaded, but you can name it back to 'VelvetRopes.zip')  as downloaded from Slosh ShareCG account, untouched and unmodified. I just checked the content in Daz Studio and everything should work fine.

    By downloading it, you'll get access to Slosh's Velvet Ropes as he shared it back in 2013.

    As he said eloquently in the readme, ’Have fun with this, and use it any way you want, just do not redistribute as your own’.

    If you want to thank someone, thank him.

    Full text of the readme:

    Velvet Ropes
    by Slosh
    05/01/2013

    Instructions:  Unzip files to your DAZ Library or preferred content directory.  To install metadata, open the Content DB Maintenance tab and choose "Re-Import Metadata".  Select "Velvet Ropes" from the list and click "Accept"

    I made this velvet rope set for use in a recent image and would now like to share it with all of you.  The ropes and posts come with a few material options, including brass, silver, chrome, and gold, plus red or blue velvet (other colors are easily made in surfaces tab).

    Also included are pose presets which will move additional posts the correct distance away from each other so that the ropes fit between them.  The ropes have pose presets that determine if they swing left, right, forward or back to connect with other posts.

    There is a preload set that is a post with a rope attached, but separate post and rope props are available to end your rows with.  To add additional ropes, just be sure to have the post selected in your scene, then the rope will parent to the post automatically.  Then, select the rope and either use the preset poses to rotate them around the post, or use your Y-Rotate parameter slider.

    Have fun with this, and use it any way you want, just do not redistribute as your own.  


    Regards,
        Slosh

    By

    Elor Elor September 2025 in Freebies
  • Certain outfits breaking metadata

    Unfortunately the preferred base and auto-fit base are not set in the metadata, but in the object data file itself (.dsf). The Rocker Outfit gets it right (it was first), but the Dragon Lady Outfit kept an auto-filled field for those two base identifiers in the Scene Identification dialog when it was created.

    In the "\data\Mada\Dragonlady\Dragon Lady Panty\DragonladyPant.dsf" file, replace the following two lines:

    "auto_fit_base" : "/Rocker Outfit for Genesis 3 Female(s) and Genesis 8 Female(s)/Rocker Thong G8",
    "preferred_base" : "/Rocker Outfit for Genesis 3 Female(s) and Genesis 8 Female(s)/Rocker Thong G8"

     with:

    "preferred_base" : "/Genesis 8/Female"

     Save over the original, and you should not have any more problems with it.

     

    By

    NorthOf45 NorthOf45 September 2025 in Technical Help (nuts n bolts)
  • Daz Studio 6 Beta - version 6.25.2026.14722! (Updated May 28, 2026)

    Metadata issue split to https://www.daz3d.com/forums/discussion/743331/certain-outfits-breaking-metadata

    By

    Richard Haseltine Richard Haseltine September 2025 in Daz Studio Discussion
  • Certain outfits breaking metadata
    This discussion was created from comments split from: Daz Studio 2025 ALPHA - version 6.25.2025.25616! (Updated September 16, 2025).

    By

    IceCrMn IceCrMn September 2025 in Technical Help (nuts n bolts)
  • Certain outfits breaking metadata

    IceCrMn said:

    Richard Haseltine said:

    IceCrMn said:

    Not sure how this happened, but nearly all of my clothing has had their Auto-fit Base and Preferred Base set to the "Rocker Outfit for Genesis 3 Females and Genesis 8 Females".

    I'm going to take the nuclear option and just delete the database and re-import it from DIM.
    This is going to take a while so not sure, but it should fix it.

    We'll see in about an hour or so.

    This sounds like bad product metadata - did you check DS 4 befoe applying the nuclear option? I would have tried reinstalling the base figures first.

    I'm pretty sure you are correct.

    After doing all the DB stuff and reinstalling the Rocker Outfit and Dragon Lady outfit the metadata is still wrong for the Dragon Lady outfit.

    The Rocker Panties has correct metadata, the Dragon lady panties do not.

    The panties for both are identical so it looks like the Rocker panties were reused in the Dragon Lady product.

     

    Could someone with the Dragon Lady product please check if theirs is showing the same bad meta data please?

    The Rocker set is included with the DS4 bundle so everyone should have that one.

    https://www.daz3d.com/dforce-dragon-lady-outfit-for-genesis-8-females

    https://www.daz3d.com/rocker-outfit-for-genesis-3-female-s-and-genesis-8-female-s

     

    I'll sort thru the other products as I get time.

    They may have the same problem.

     

    edit: Here's the other one

    https://www.daz3d.com/dforce-blue-nile-outfit-for-genesis-8-females

    ...also this is NOT an ALPHA issue. It appears to be a content product problem so my posts concerning this really should be moved to a more appropriate forum topic.

     

    By

    IceCrMn IceCrMn September 2025 in Technical Help (nuts n bolts)
Previous Next
Adding to Cart…

Daz 3D is part of Tafi

Connect

DAZ Productions, Inc.
7533 S Center View Ct #4664
West Jordan, UT 84084

HELP

Contact Us

Tutorials

Help Center

Sell Your 3D Content

Affiliate Program

Documentation Center

Open Source

Consent Preferences

JOIN DAZ

Memberships

Blog

About Us

Press

Careers

Bridges

Community

In the Studio

Gallery

Forum

DAZ STORE

Shop

Freebies

Published Artists

Licensing Agreement | Terms of Service | Privacy Policy | EULA

© 2026 Daz Productions Inc. All Rights Reserved.

Create An Account