MOTION TIPS
1.89K subscribers
65 photos
4 videos
25 files
154 links
Кладовка CG-полезностей и лучшее из чата MOTION TALK https://t.me/MOTIONTALK
Download Telegram
#PYTHON #C4D #TIPS о том как сделать рандомное вращение клонеров на строго определённое количество градусов. При простой переделке можно управлять так и другими параметрами
Добраться до точек сплайна через Xpresso не то чтобы сложно - всего-то нужен Iterator. Но в Python дело обстоит совсем иначе - у spline object нет возможности достучаться к точкам напрямую. Метод GetSplinePoint() принимает не индекс точки, а float оффсета по сплайну, как-бы намекая, что даёт она доступ не к точкам сплайна, а к положению произвольной точки, лежащей на кривой.
Не могу пока понять причин, но главные методы для получения данных о сплайне доступны почему-то в другом объекте - SplineHelp. Его инициализация выглядит так:
# получаем сплайн
obj = doc.GetActiveObject()
# создаём объект SplineHelp
spl = c4d.utils.SplineHelp()
# инициализируем его
spl.InitSplineWith(obj)
# берём матрикс
pointPos[0] = spl.GetPointMatrix(0)


Кто знает почему так сделано - пишите в @motionTalk абоненту @motionTerrorito
#c4d #python #spline #SplineHelp #scripting #programming
This media is not supported in your browser
VIEW IN TELEGRAM
Когда начинаешь использовать слои, больше всего досаждает что дочерние объекты объектов, добавленных к слою, не добавляются к нему автоматически. Этот небольшой Python tag - простое решение проблемы. Любой дочерний объект сразу будет добавлен в тот же слой, к которому принадлежит родительский
#freebies #c4d #layer #object #layerManager #fix #python #pythonTag
https://yadi.sk/d/F-vpGVfBN4xrWA
Много вопросов при разработке на python для Cinema 4D представляет система Undo, а конкретно - когда целевое действие меняет сразу несколько объектов, особенно в цикле, и всё это должно быть отменяемо.
API Cinema 4D вообще довольно запутано и сложно для понимания, часто не хватает логики или просто нормальной документации. Но здесь всё не так сложно как кажется. Принцип таков - блок StartUndo() > AddUndo() > EndUndo() добавляет ОДНО действие отмены вне зависимости от числа AddUndo(). AddUndo() просто добавляет к текущему стеку undo снепшоты, а не добавляет новый шаг в истории.
Пример на скриншоте переименует все выделенные объекты и добавит один шаг в истории изменений, отменяющий сразу все переименования
#python #code #programming #c4dapi #c4d
https://developers.maxon.net/docs/Cinema4DPythonSDK/html/manuals/introduction/autocompletion_dummy_package.html
#c4d #maxon #py #python #docs свершилось чудо! Maxon представили автокомплишн пакет для сторонних ide