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

Здесь есть возможность читать онлайн «Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Третье издание, расширенное и обновлённое для Blender 2.57

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

data = uvtex.data

for n in range(len(texfaces)):

tf = texfaces[n]

data[n].uv1 = texverts[tf[0]]

data[n].uv2 = texverts[tf[1]]

data[n].uv3 = texverts[tf[2]]

if len(tf) == 4:

data[n].uv4 = texverts[tf[3]]

scn = bpy.context.scene

ob = bpy.data.objects.new(name, me)

scn.objects.link(ob)

scn.objects.active = ob

return

def parseFace(words):

face = []

texface = []

for n in range(1, len(words)):

li = words[n].split('/')

face.append( int(li[0])-1 )

try:

texface.append( int(li[1])-1 )

except:

pass

return (face, texface)

__init__.py

Этот файл содержит пользовательский интерфейс, то есть два класса, которые создают пункты меню для экспортёра и импортёра. Простой экспортёр вызывается из меню File » Export. Есть две опции: логический выбор, чтобы повернуть меш на 90 градусов (для преобразования между осями Y и Z для направления вверх), и масштаб. Простой импортёр вызывается из меню File » Import. Есть две опции: логический выбор, чтобы повернуть меш на 90 градусов (чтобы ось Z указывала вверх), и масштаб.

__init__.pyтакже содержит словарь bl_info, который преобразует пакет в аддон Блендера, код регистрации, и код для импорта/перезагрузки двух других файлов.

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

# File __init__.py

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

# Информация аддона

bl_info = {

"name": "Simple OBJ format",

"author": "Thomas Larsson",

"location": "File > Import-Export",

"description": "Simple Wavefront obj import/export. Does meshes and UV coordinates",

"category": "Import-Export"}

# Для поддержки правильной перезагрузки, пробуем обратиться

# к переменной пакета, если она есть, перезагрузить всё

if "bpy" in locals():

import imp

if 'simple_obj_import' in locals():

imp.reload(simple_obj_import)

if 'simple_obj_export' in locals():

imp.reload(simple_obj_export)

import bpy

from bpy.props import *

from io_utils import ExportHelper, ImportHelper

#

# Меню Import

#

class IMPORT_OT_simple_obj(bpy.types.Operator, ImportHelper):

bl_idname = "io_import_scene.simple_obj"

bl_description = 'Import from simple OBJ file format (.obj)'

bl_label = "Import simple OBJ" bl_space_type = "PROPERTIES"

bl_region_type = "WINDOW"

filename_ext = ".obj"

filter_glob = StringProperty(default="*.obj;*.mtl", options={'HIDDEN'})

filepath = bpy.props.StringProperty(

name="File Path",

description="File path used for importing the simple OBJ file",

maxlen= 1024, default= "")

rot90 = bpy.props.BoolProperty(

name = "Rotate 90 degrees",

description="Rotate mesh to Z up",

default = True)

scale = bpy.props.FloatProperty(

name = "Scale",

description="Scale mesh",

default = 0.1, min = 0.001, max = 1000.0)

def execute(self, context):

from . import simple_obj_import

print("Load", self.properties.filepath)

simple_obj_import.import_simple_obj(

self.properties.filepath,

self.rot90,

self.scale)

return {'FINISHED'}

def invoke(self, context, event):

context.window_manager.fileselect_add(self)

return {'RUNNING_MODAL'}

#

# Меню Export

#

class EXPORT_OT_simple_obj(bpy.types.Operator, ExportHelper):

bl_idname = "io_export_scene.simple_obj"

bl_description = 'Export from simple OBJ file format (.obj)'

bl_label = "Export simple OBJ"

bl_space_type = "PROPERTIES"

bl_region_type = "WINDOW"

# Из ExportHelper. Фильтрация имён файлов.

filename_ext = ".obj"

filter_glob = StringProperty(default="*.obj", options={'HIDDEN'})

filepath = bpy.props.StringProperty(

name="File Path",

description="File path used for exporting the simple OBJ file",

maxlen= 1024, default= "")

rot90 = bpy.props.BoolProperty(

name = "Rotate 90 degrees",

description="Rotate mesh to Y up",

default = True)

scale = bpy.props.FloatProperty(

name = "Scale",

description="Scale mesh",

default = 0.1, min = 0.001, max = 1000.0)

def execute(self, context):

print("Load", self.properties.filepath)

from . import simple_obj_export

simple_obj_export.export_simple_obj(

self.properties.filepath,

context.object,

self.rot90,

1.0/self.scale)

return {'FINISHED'}

def invoke(self, context, event):

context.window_manager.fileselect_add(self)

return {'RUNNING_MODAL'}

#

# Регистрация

#

def menu_func_import(self, context):

self.layout.operator(IMPORT_OT_simple_obj.bl_idname, text="Simple OBJ (.obj)...")

def menu_func_export(self, context):

self.layout.operator(EXPORT_OT_simple_obj.bl_idname, text="Simple OBJ (.obj)...")

def register():

bpy.utils.register_module(__name__)

bpy.types.INFO_MT_file_import.append(menu_func_import)

bpy.types.INFO_MT_file_export.append(menu_func_export)

def unregister():

bpy.utils.unregister_module(__name__)

bpy.types.INFO_MT_file_import.remove(menu_func_import)

bpy.types.INFO_MT_file_export.remove(menu_func_export)

if __name__ == "__main__":

register()

Симуляции

В этом разделе мы обращаемся к потенциалу симуляций Блендера из Питона. Некоторые из примеров были вдохновлены книгой Bounce, Tumble and SplashТони Муллена (ищите в Сети великолепный перевод от Morthan'а, пользуясь случаем, передаю ему большое СПАСИБО! - прим. пер.) . Однако, большинство рендеров не выглядят так же хорошо, как в книге Муллена, так как целью этих заметок не было найти оптимальный способ для настройки параметров, а скорее чтобы показать, как их можно настраивать из Питона.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x