コード例 #1
0
def get_materials(just_selected=False):
    materials = OrderedDict()
    material_counter = {}

    for group in utils.get_mesh_export_nodes(just_selected):
        material_counter[group.name] = 0
        for object in group.objects:
            for slot in object.material_slots:
                if slot.material is None:
                    continue

                if slot.material not in materials:
                    node_name = utils.get_node_name(group)

                    node, index, name, physics = get_material_parts(
                        node_name, slot.material.name)

                    # check if material has no position defined
                    if index == 0:
                        material_counter[group.name] += 1
                        index = material_counter[group.name]

                    materials[slot.material] = "{}__{:02d}__{}__{}".format(
                        node, index, name, physics)

    return materials
コード例 #2
0
ファイル: export.py プロジェクト: ochounos/BCRYExporter
    def _export_library_visual_scenes(self, parent_element):
        current_element = self._doc.createElement("library_visual_scenes")
        visual_scene = self._doc.createElement("visual_scene")
        visual_scene.setAttribute("id", "scene")
        visual_scene.setAttribute("name", "scene")
        current_element.appendChild(visual_scene)
        parent_element.appendChild(current_element)

        if utils.get_mesh_export_nodes(self._config.export_selected_nodes):
            if utils.are_duplicate_nodes():
                message = "Duplicate Node Names"
                bpy.ops.screen.display_error('INVOKE_DEFAULT', message=message)

            for group in utils.get_mesh_export_nodes(
                    self._config.export_selected_nodes):
                self._write_export_node(group, visual_scene)
        else:
            pass  # TODO: Handle No Export Nodes Error
コード例 #3
0
ファイル: export.py プロジェクト: ochounos/BCRYExporter
    def _export_library_controllers(self, parent_element):
        library_node = self._doc.createElement("library_controllers")

        ALLOWED_NODE_TYPES = ('chr', 'skin')
        for group in utils.get_mesh_export_nodes(
                self._config.export_selected_nodes):
            node_type = utils.get_node_type(group)
            if node_type in ALLOWED_NODE_TYPES:
                for object_ in group.objects:
                    if not utils.is_bone_geometry(object_):
                        armature = utils.get_armature_for_object(object_)
                        if armature is not None:
                            self._process_bones(library_node, group, object_,
                                                armature)

        parent_element.appendChild(library_node)
コード例 #4
0
def get_materials(just_selected=False):
    materials = OrderedDict()
    material_counter = {}

    for group in utils.get_mesh_export_nodes(just_selected):
        material_counter[group.name] = 0
        for object in group.objects:
            for i in range(0, len(object.material_slots)):
                slot = object.material_slots[i]
                material = slot.material
                if material is None:
                    continue

                if material not in materials.values():
                    node_name = utils.get_node_name(group)

                    material.name = utils.replace_invalid_rc_characters(
                        material.name)
                    for image in get_textures(material):
                        try:
                            image.name = utils.replace_invalid_rc_characters(
                                image.name)
                        except AttributeError:
                            pass

                    node, index, name, physics = get_material_parts(
                        node_name, slot.material.name)

                    # check if material has no position defined
                    if index == 0:
                        material_counter[group.name] += 1
                        index = material_counter[group.name]

                    material_name = "{}__{:02d}__{}__{}".format(
                        node, index, name, physics)
                    materials[material_name] = material

    return sort_materials_by_names(materials)
コード例 #5
0
ファイル: export.py プロジェクト: ochounos/BCRYExporter
    def _export_library_geometries(self, parent_element):
        libgeo = self._doc.createElement("library_geometries")
        parent_element.appendChild(libgeo)
        for group in utils.get_mesh_export_nodes(
                self._config.export_selected_nodes):
            for object_ in group.objects:
                if object_.type != 'MESH':
                    continue

                bmesh_, layer_state, scene_layer = utils.get_bmesh(object_)
                geometry_node = self._doc.createElement("geometry")
                geometry_name = utils.get_geometry_name(group, object_)
                geometry_node.setAttribute("id", geometry_name)
                mesh_node = self._doc.createElement("mesh")

                print()
                bcPrint('"{}" object is being processed...'.format(
                    object_.name))

                start_time = clock()
                self._write_positions(bmesh_, mesh_node, geometry_name)
                bcPrint('Positions have been writed {:.4f} seconds.'.format(
                    clock() - start_time))

                start_time = clock()
                self._write_normals(object_, bmesh_, mesh_node, geometry_name)
                bcPrint('Normals have been writed {:.4f} seconds.'.format(
                    clock() - start_time))

                start_time = clock()
                self._write_uvs(object_, bmesh_, mesh_node, geometry_name)
                bcPrint(
                    'UVs have been writed {:.4f} seconds.'.format(clock() -
                                                                  start_time))

                start_time = clock()
                self._write_vertex_colors(object_, bmesh_, mesh_node,
                                          geometry_name)
                bcPrint(
                    'Vertex colors have been writed {:.4f} seconds.'.format(
                        clock() - start_time))

                start_time = clock()
                self._write_vertices(mesh_node, geometry_name)
                bcPrint('Vertices have been writed {:.4f} seconds.'.format(
                    clock() - start_time))

                start_time = clock()
                self._write_triangle_list(object_, bmesh_, mesh_node,
                                          geometry_name)
                bcPrint(
                    'Triangle list have been writed {:.4f} seconds.'.format(
                        clock() - start_time))

                extra = self._create_double_sided_extra("MAYA")
                mesh_node.appendChild(extra)
                geometry_node.appendChild(mesh_node)
                libgeo.appendChild(geometry_node)

                utils.clear_bmesh(object_, layer_state, scene_layer)
                bcPrint('"{}" object has been processed for "{}" node.'.format(
                    object_.name, group.name))