Шрифт:
#----------------------------------------------------------
# File __init__.py
#----------------------------------------------------------
# Addon info
bl_info = {
"name": "Multifile",
'author': 'Thomas Larsson',
"location": "View3D > UI panel > Add meshes",
"category": "3D View"
}
# Для поддержки правильной перезагрузки, пробуем обратиться
# к переменной пакета, если она есть, перезагрузить всё
if "bpy" in locals:
import imp imp.reload(mycube)
imp.reload(mysphere)
imp.reload(mycylinder)
print("Reloaded multifiles")
else:
from . import mycube, mysphere, mycylinder
print("Imported multifiles")
import bpy
from bpy.props import *
#
# class AddMeshPanel(bpy.types.Panel):
#
class AddMeshPanel(bpy.types.Panel):
bl_label = "Add meshes"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
def draw(self, context):
self.layout.operator("multifile.add",
text="Add cube").mesh = "cube"
self.layout.operator("multifile.add",
text="Add cylinder").mesh = "cylinder"
self.layout.operator("multifile.add",
text="Add sphere").mesh = "sphere"
#
# class OBJECT_OT_AddButton(bpy.types.Operator):
#
class OBJECT_OT_AddButton(bpy.types.Operator):
bl_idname = "multifile.add"
bl_label = "Add"
mesh = bpy.props.StringProperty
def execute(self, context):
if self.mesh == "cube":
mycube.makeMesh(-8)
elif self.mesh == "cylinder":
mycylinder.makeMesh(-5)
elif self.mesh == "sphere":
mysphere.makeMesh(-2)
return{'FINISHED'}
#
# Регистрация
#
def register:
bpy.utils.register_module(__name__)
def unregister:
bpy.utils.unregister_module(__name__)
if __name__ == "__main__":
register
Простой импортёр и экспортёр obj-файлов
Формат OBJ часто используется для обмена данными меша между различными приложениями. Первоначально изобретеный для Wavefront Maya, он стал отраслевым стандартом. Это простой ASCII-формат, который содержит строки следующего вида:
•
v x y z
Координаты вершин как (x, y, z)
•
vt u v
Текстурные координаты как (u, v)
•
f v1 v2 ... vn
Грань с n углами, в вершинах v1, v2, ... vn. Для мешей без координат UV.
•
f v1/vt1 v2/vt2 ... vn/vtn