Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
multitool
7 лет назад

Введение в 3D для чайников и программистов, уровень сложности 1(рекурсия, что ты делаешь, прекрати xD))

 

Привет читатель, продолжим ковырять 3D редактор и жечь Питоном? Когда ты увидишь код, не убегай, в конце я покажу, как его писать и использовать совсем не зная языков программирования

Пример, код которого ниже:

Продвинутый вариант:

Он сказал поехали и махнул рукой:

# инициализация Python
import bpy


# инициализация переменной (длинна объектов)
length = 2


# функция очистки объекта от повторяющихся полигонов (по факту ее можно убрать, но мне так захотелось)
def removeDoubles():
    bpy.ops.object.editmode_toggle()
    bpy.ops.mesh.select_all(action='TOGGLE')
    bpy.ops.mesh.remove_doubles()
    bpy.ops.mesh.select_all(action='TOGGLE')
    bpy.ops.object.editmode_toggle()
# тут мы создаем группу из 5 объектов
def createGroup(length):
        # а тут код выйдет из рекурсии по достижении 32 вызова
    if length < 33:
        # гоняем примитив по координатам
bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, -length)})
        bpy.ops.transform.translate(value=((length/2), 0, 0))
        bpy.ops.transform.translate(value=(0, (length/2), 0))
        bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, -length, 0)})
        bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(-length, 0, 0)})
        bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, length, 0)})
        bpy.ops.object.select_by_type(type='MESH')
        bpy.ops.object.join()
        removeDoubles()
        length = length * 2
  
        # ташемта сама рекурсия во всей красe (вызов группы из 5 объектов)
        length = createGroup(length)
    return length
createGroup(length)

Я там обещал показать, как писать код не зная языков. Мой софт сам написан на Python, так что открываете консоль, создаете и двигаете примитивы, копипаста из консоли, PROFIT!!! 


3
5.364 GOLOS
На Golos с September 2017
Комментарии (5)
Сортировать по:
Сначала старые