3DS Max Python скриптинг - PullRequest
       50

3DS Max Python скриптинг

0 голосов
/ 13 декабря 2018

Я часами искал, как выполнить очень простой скрипт на Python для 3DS Max (v2017), но API ужасны, если не сказать больше.

Я даже не могу понять, как выберите существующий объект в сцене. Плюс я не понимаю, должен ли я использовать pymxs wrapper или MaxPlus.

Мне нужно просто сказать 3ds Max изменить RenderingАтрибут эффекта, когда выбрана определенная камера сцены - или вид переключен на эту камеру.

Я напишу вам сценарий в псевдокоде, чтобы вы могли - надеюсь - лучше понять тему:

camera_1 = MaxPlus.Factory.SelectCameraObject("36x24_MoreDof")
# camera name is 36x24_MoreDof

camera_2 = MaxPlus.Factory.SelectCameraObject("36x24_LessDof")
# camera name is 36x24_LessDof

effect1 = RenderingTab.EnvironmentAndEffects.Effects.Attribute1
effect2 = RenderingTab.EnvironmentAndEffects.Effects.Attribute2

effect1.active = False
effect2.active = False

while True:
    if camera_1.isSelected == True:
        effect1.active = True
        effect2.active = False
    elif camera_2.isSelected == True:
        effect1.active = False
        effect2.active = True

Надеюсь, это достаточно ясно .. У вас есть идеи, как перевести это в реальный код Python для 3DS Max?

Заранее всем спасибо,

Риккардо

1 Ответ

0 голосов
/ 25 февраля 2019

Ниже приведен скрипт на Python, который будет использоваться в качестве руководства для вашего запроса.

  • PyMXS;Мой совет - использовать это в первую очередь.Он охватывает почти все MaxScript (за исключением некоторых экзотических функций синтаксиса MaxScript).Он непрерывно разрабатывался в течение десятилетий, является надежным и предлагает множество вспомогательных функций и упрощений по сравнению с 3ds Max SDK, на котором он построен.
  • MaxPlus;я советую использовать некоторые из них, которые не покрываются PyMXS (например, функцию MaxPlus.GetQMaxMainWindow () для создания пользовательского интерфейса на основе Qt), но не используйте его в качестве основного инструмента в Python.Он более новый, и, хотя в долгосрочной перспективе он может оказаться лучше для Python, связанного с 3ds Max SDK, вы можете предпочесть PyMXS для покрытия и простоты в краткосрочной перспективе.

По сути, я рекомендую подуматьсебя как программиста MaxScript, который использует Python для языковых преимуществ.Чтобы получить доступ к сцене 3ds Max, пройдите MaxScript (через PyMXS).Затем вы используете сильные стороны Python для обработки строк и управления данными (словари!).При необходимости используйте MaxPlus для доступа к SDK более низкого уровня.

Сценарий ниже извлекает объект по имени, извлекает эффект рендеринга по индексу и включает / отключает эффект рендеринга в соответствии с выбором объекта:

import pymxs
mxs = pymxs.runtime

object_1 = mxs.getNodeByName( "Camera001" )

effect_1 = mxs.getEffect(1)
effect_1.camera

mxs.setActive(effect_1, mxs.false)

if object_1.isSelected:
    mxs.setActive(effect_1, mxs.true)

Надеюсь, это поможет!

...