Чтение онлайн

на главную

Жанры

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Larsson Thomas

Шрифт:

#----------------------------------------------------------

# 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

Грани с n углами. Углы — это вершины

v1, v2, ... vn
в 3D-пространстве и
vt1, vt2, ... vtn
в текстурном пространстве.

Больше конструкций, например, для настройки материала или групп граней, имеются в полноценном экспортёре-импортёре OBJ-формата.

Есть две вещи, которые надо принять во внимание. Во-первых, большинство приложений (насколько мне известно, все, кроме Блендера) используют соглашение, что ось

Y
указывает вверх, в то время как Блендер использует ось
Z
для направления вверх. Во-вторых, Майя начинает подсчет вершин с
1
, тогда как Блендер начинает отсчет от
0
. Это означает, что углы граней на самом деле расположены в вершинах
v1– 1, v2– 1, ... vn– 1
в 3D-пространстве и в
vt1– 1, vt2– 1, ... vtn– 1
в пространстве текстур.

Простой экспортёр-импортёр OBJ-файлов — это пакет Питона, который состоит из трех файлов: два файла, которые фактически выполняют работу экспорта/импорта, и

__init__.py
, который делает каталог пакетом.

Простой экспорт OBJ-файлов

Этот скрипт экспортирует выбранный меш как OBJ-файл.

#----------------------------------------------------------

# File export_simple_obj.py

# Простой OBJ-экспортёр, который записывает только вершины, грани и текстурные вершины

Поделиться:
Популярные книги

Бастард Императора

Орлов Андрей Юрьевич
1. Бастард Императора
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Бастард Императора

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Имя нам Легион. Том 7

Дорничев Дмитрий
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 7

Измена. Вторая жена мужа

Караева Алсу
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Вторая жена мужа

Буря империи

Сай Ярослав
6. Медорфенов
Фантастика:
аниме
фэнтези
фантастика: прочее
эпическая фантастика
5.00
рейтинг книги
Буря империи

Пенсия для морского дьявола

Чиркунов Игорь
1. Первый в касте бездны
Фантастика:
попаданцы
5.29
рейтинг книги
Пенсия для морского дьявола

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Тринадцатый II

NikL
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый II

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота

Законы Рода. Том 9

Flow Ascold
9. Граф Берестьев
Фантастика:
городское фэнтези
попаданцы
аниме
дорама
фэнтези
фантастика: прочее
5.00
рейтинг книги
Законы Рода. Том 9

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец

Огненный князь 4

Машуков Тимур
4. Багряный восход
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 4

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор