вторник, 12 апреля 2016 г.

Blog by Flogger-K. 3D и не только: Пейзаж после погрома.

Blog by Flogger-K. 3D и не только: Пейзаж после погрома.: Лучшее - враг хорошего. Иногда это утверждение верно, иногда - нет. Вышедший недавно blender 2.77a заставил меня предположить, что если в н...

воскресенье, 10 апреля 2016 г.

Хорошо, когда некогда возиться...

   По причине недостатка времени пришлось залезть в модуль bpy для ускорения работы - ну вот не могу я три десятка блоков клонировать три раза, каждый раз смещая и поворачивая клон на 90 градусов, да еще применяя поворот. А надо ведь еще переименовать каждый блок, чтобы имя объекта совпадало с именем меша, да еще добавить каждому блоку игровое проперти с определенным значением - ручками будет нудно и долго. Проперти надо добавлять, потому что у меня редактор должен использовать bge, а проперти будет служить указанием типа, для сборки в список имен блоков одного типа. Я еще не решил как оно лучше будет сделать. И наверное, надо выстроить блоки в линию.
    Запишу, читателям может пригодится, мне как страховка от склероза.

*****
Клонировать и покрутить:

import bpy
# получаем выделенный объект
object = bpy.context.object
# дублируем
bpy.ops.object.duplicate()
# поскольку после дублирования выделенным становится клон, то переполучаем
# выделенный объект.
object = bpy.context.object
# двигаем, тут понятно и так
object.location[1] = object.location[1] - 4.0
# вращаем, угол задается в радианах
bpy.ops.transform.rotate(value = 1.5708, axis = (0.0, 0.0, 1.0))
# применяем вращение
bpy.ops.object.transform_apply(rotation = True)

*****
Создать новое проперти и изменить его значение:

import bpy
# получаем выделенный объект
object = bpy.context.object
# создаем новое проперти типа STRING
bpy.ops.object.game_property_new(type = 'STRING', name = 'TYPE')
# получаем к новому проперти доступ по имени и изменяем значение
object.game.properties.get('TYPE').value = 'bla-bla'

*****
Переименовать объект и меш:

import bpy
# получаем выделенный объект
object = bpy.context.object
# Переименовываем сам объект блока
object.name = 'NEW_NAME'
# Переименовываем меш блока
object.data.name = 'NEW_NAME'