Настройка слоя рендеринга (переднего плана, персонажа и фона в своем собственном рендер-слое) с помощью Python - PullRequest
0 голосов
/ 11 апреля 2019

Я застрял в поисках того, как разделить окружающую среду на передний и задний план. Я думал о том, чтобы получить значение «расстояние от камеры» (через «дисплей> отображение заголовка> детали объекта»), чтобы я мог использовать его для разделения на передний план и фон, используя значение расстояния символа от камеры в качестве ориентира ,

Проблема в том, что я не знаю, как получить его значение в Python. Так может кто-нибудь помочь мне, пожалуйста?

Я использую Maya 2016.

Я получил "none" в этой команде:

import maya.cmds as cmds

print cmds.headsUpDisplay('HUDObjDetDistFromCam', q=1)

1 Ответ

1 голос
/ 13 апреля 2019

Вместо того, чтобы пытаться угнать расстояние от объекта до камеры, вы можете просто вычислить его самостоятельно.

import math
import maya.cmds as cmds

def distance_to_camera(obj, cam):
    cam_pos = cmds.xform(cam, t=True, ws=True, q=True)
    object_pos = cmds.xform(obj, t=True, ws=True, q=True)
    raw_dist = [a-b for a, b in zip(cam_pos, object_pos)]
    return math.sqrt (sum([a**2 for a in raw_dist]))

distance_to_camera ('pCube1', 'persp')

raw_dist = [a-b for a, b in zip(cam_pos, object_pos)] принимаетдва списка по 3 числа (позиции) и вычитание каждого элемента в одном списке из его противоположного числа в другом.

math.sqrt (sum([a**2 for a in raw_dist])) - квадратный корень из квадратов трех чисел в raw_dist -то есть расстояние.Вы можете сделать это с помощью API Maya, но эта версия не требует дополнительного импорта, кроме math

...