[Blender] Назначить абсолютно черный материал для материалов (или в основном внутренних) объектов #84

Closed
opened 2023-06-17 07:47:58 +03:00 by brothermechanic · 8 comments
brothermechanic commented 2023-06-17 07:47:58 +03:00 (Migrated from gitlab.com)

Продолжение для !7

При импорте материалов, назначить для объектов без материалов абсолютно черный материал.

Преимущества:

  • отделение внутренних невидимых частей атрибутом материала
  • ускорение рендеринга за счет простоты просчета абсолютно черного тела
  • естественный внешний вид - эффект тени всего что внутри
  • быстрый дебаг по неназначенным материалам - черную крышку легче заметить и, если требуется, переназначить материал
Продолжение для !7 При импорте материалов, назначить для объектов без материалов абсолютно черный материал. Преимущества: - отделение внутренних невидимых частей атрибутом материала - ускорение рендеринга за счет простоты просчета абсолютно черного тела - естественный внешний вид - эффект тени всего что внутри - быстрый дебаг по неназначенным материалам - черную крышку легче заметить и, если требуется, переназначить материал
brothermechanic commented 2023-06-17 07:48:02 +03:00 (Migrated from gitlab.com)

assigned to @brothermechanic

assigned to @brothermechanic
brothermechanic commented 2023-06-17 07:52:13 +03:00 (Migrated from gitlab.com)

changed title from [Blender] {-Установ-}ить абсолютно черный материал для материалов (или в основном внутренних) объектов to [Blender] {+Назнач+}ить абсолютно черный материал для материалов (или в основном внутренних) объектов

changed title from **[Blender] {-Установ-}ить абсолютно черный материал для материалов (или в основном внутренних) объектов** to **[Blender] {+Назнач+}ить абсолютно черный материал для материалов (или в основном внутренних) объектов**
brothermechanic commented 2023-06-17 07:52:13 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
brothermechanic commented 2023-06-17 07:52:27 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
brothermechanic commented 2023-06-17 07:52:36 +03:00 (Migrated from gitlab.com)

changed the description

changed the description
brothermechanic commented 2023-06-17 07:54:57 +03:00 (Migrated from gitlab.com)

marked this issue as related to #83

marked this issue as related to #83
brothermechanic (Migrated from gitlab.com) closed this issue 2023-06-17 07:55:28 +03:00
brothermechanic commented 2023-06-17 07:57:30 +03:00 (Migrated from gitlab.com)

в ветку 83-bledner-cad-cg-pipeline добавил блок метода для черного материала

def assign_black(bobj):
    """ Set absolute black Blender shader """
    fem_mat_name = 'black_mat'

    if fem_mat_name in bpy.data.materials:
        # prepare for reimport
        if len(bobj.material_slots) < 1:
            bobj.data.materials.append(bpy.data.materials[fem_mat_name])
        else:
            bobj.material_slots[0].material = bpy.data.materials[fem_mat_name]
    else:
        bmat = bpy.data.materials.new(name=fem_mat_name)
        bmat.use_nodes = True
        bmat.diffuse_color = (0, 0, 0, 1)
        bmat.node_tree.nodes.remove(bmat.node_tree.nodes['Principled BSDF'])
        emission = bmat.node_tree.nodes.new(type="ShaderNodeEmission")
        emission.location = 0, 300
        emission.inputs['Color'].default_value = (0, 0, 0, 1)
        emission.inputs['Strength'].default_value = 0
        bmat.node_tree.links.new(
            emission.outputs['Emission'],
            bmat.node_tree.nodes['Material Output'].inputs['Surface'])
        # prepare for reimport
        if len(bobj.material_slots) < 1:
            bobj.data.materials.append(bmat)
        else:
            bobj.material_slots[0].material = bmat

    logger.debug('Assign %s to object %s', fem_mat_name, bobj.name)
    return bobj
в ветку 83-bledner-cad-cg-pipeline добавил блок метода для черного материала ```python def assign_black(bobj): """ Set absolute black Blender shader """ fem_mat_name = 'black_mat' if fem_mat_name in bpy.data.materials: # prepare for reimport if len(bobj.material_slots) < 1: bobj.data.materials.append(bpy.data.materials[fem_mat_name]) else: bobj.material_slots[0].material = bpy.data.materials[fem_mat_name] else: bmat = bpy.data.materials.new(name=fem_mat_name) bmat.use_nodes = True bmat.diffuse_color = (0, 0, 0, 1) bmat.node_tree.nodes.remove(bmat.node_tree.nodes['Principled BSDF']) emission = bmat.node_tree.nodes.new(type="ShaderNodeEmission") emission.location = 0, 300 emission.inputs['Color'].default_value = (0, 0, 0, 1) emission.inputs['Strength'].default_value = 0 bmat.node_tree.links.new( emission.outputs['Emission'], bmat.node_tree.nodes['Material Output'].inputs['Surface']) # prepare for reimport if len(bobj.material_slots) < 1: bobj.data.materials.append(bmat) else: bobj.material_slots[0].material = bmat logger.debug('Assign %s to object %s', fem_mat_name, bobj.name) return bobj ```
brothermechanic commented 2023-06-19 23:02:50 +03:00 (Migrated from gitlab.com)

mentioned in merge request !36

mentioned in merge request !36
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robossembler/framework#84
No description provided.