Это легко лечится. Поставь в вместо (ext) ConeAngle: deg($CONEANGLE) --
(int) ConeAngle: 40 например ( и PenumbraAngle вроде надо поправить).
Где-то они в TCL-е напартачили. Можно попробовать покопать.
Другое дело, что написано в Bug Fixes
мол, Incomplete UV sets on poly meshes are no longer ignored.
а они таки по прежнему игноред :-(
(int) ConeAngle: 40 например ( и PenumbraAngle вроде надо поправить).
Где-то они в TCL-е напартачили. Можно попробовать покопать.
Другое дело, что написано в Bug Fixes
мол, Incomplete UV sets on poly meshes are no longer ignored.
а они таки по прежнему игноред :-(
Секундочку, что значит подставьте вместо (ext) ConeAngle:?
Эта проблема в нескольких источниках - конкретно, у меня кастомный шейдер для света с большим количеством фичей, так так вообще настройки с майевского спота снимаются следующим образом (например):
[if {[mel "attributeQuery -node $OBJNAME -exists coneAngle"] == 1} {expr
radians([mattr $OBJNAME.coneAngle $f])} else {return 1}]
для расчета формы пучка используется функция superEllipse (статья пиксаровцев "Свет в цифровой кинематографии"), так где здесь ext и к какому месту его прилепить?
Эта проблема в нескольких источниках - конкретно, у меня кастомный шейдер для света с большим количеством фичей, так так вообще настройки с майевского спота снимаются следующим образом (например):
[if {[mel "attributeQuery -node $OBJNAME -exists coneAngle"] == 1} {expr
radians([mattr $OBJNAME.coneAngle $f])} else {return 1}]
для расчета формы пучка используется функция superEllipse (статья пиксаровцев "Свет в цифровой кинематографии"), так где здесь ext и к какому месту его прилепить?
оказывается эта проблема только со стандартными шейдерами для света - у меня шейдер свой и работает отлично, никаких глюков (у меня конус считается другой функцией), вот так-то.))
to Kidd:
Ну да ладно, я думаю по поводу источников света - это ручки просто кривоваты. Вот щас со светом вроде немного разобрался.
to Kidd:
Ну да ладно, я думаю по поводу источников света - это ручки просто кривоваты. Вот щас со светом вроде немного разобрался.
Q: When I pass my Maya light cone angle to my shader using mattr, RenderMan seems to create lights which don't match my Maya lights at all.
A: The measurement of cone angles between Maya and RenderMan tends to be quite different. In Maya, the cone angle is measured from edge to edge of the part of the light which does not have any attenuation, and the penumbra angle that you specify is such that the twice the penumbra angle added to the cone angle equals the total spot light spread. For example, if the cone angle is 50, and the penumbra angle is 30, then the spotlight will enclose a cone of 110. (Note that Maya's documentation was and may still be inconsistent with the actual behaviour of the renderer - the documentation implies that the penumbra angle is not multipled by two when computing the total light cone.)
In RenderMan, it's usually the custom that a cone angle parameter actually measures the angle from the center of the light cone to the edge of the light cone, i.e. the further extent, where it is dimmest. This is motivated by how the illuminate shadeop works in the shading language. So in RenderMan, the cone angle actually intersects the penumbra angle as well, whereas in Maya the two angles do not intersect.
So for the example light above, to match a Maya light with a cone angle of 50 and a penumbra angle of 30, you would need to use a cone angle of 55 (as the entire light cone encloses 110, but PRMan expects a number half of that since it measures from the center), and the penumbra angle remains unchanged. A quick diagram may help:
|<--30-->|<-------50------->|<--30-->| This is Maya's view
|<--30-->| |<--30-->|
|<-------55------->|< ------55------>| This is PRMan's view
MTOR helps with this situation by providing two precomputed variables that you can use in TCL expressions for shaders attached to light sources. These variables are the $CONEANGLE and PENUMBRANGLE parameters, and they are computed as follows:
$CONEANGLE = radians(MayaConeAngle / 2 + MayaPenumbraAngle)
$PENUMBRAANGLE = radians(MayaPenumbraAngle)
By supplying $CONEANGLE and $PENUMBRAANGLE (or deg($CONEANGLE), if your PRMan light shader expects angles in degrees), you can conveniently control the extent of the light cone by setting the Maya cone angle and penumbra angle attribute, and what you see in Maya will match what you get in the PRMan render.
A: The measurement of cone angles between Maya and RenderMan tends to be quite different. In Maya, the cone angle is measured from edge to edge of the part of the light which does not have any attenuation, and the penumbra angle that you specify is such that the twice the penumbra angle added to the cone angle equals the total spot light spread. For example, if the cone angle is 50, and the penumbra angle is 30, then the spotlight will enclose a cone of 110. (Note that Maya's documentation was and may still be inconsistent with the actual behaviour of the renderer - the documentation implies that the penumbra angle is not multipled by two when computing the total light cone.)
In RenderMan, it's usually the custom that a cone angle parameter actually measures the angle from the center of the light cone to the edge of the light cone, i.e. the further extent, where it is dimmest. This is motivated by how the illuminate shadeop works in the shading language. So in RenderMan, the cone angle actually intersects the penumbra angle as well, whereas in Maya the two angles do not intersect.
So for the example light above, to match a Maya light with a cone angle of 50 and a penumbra angle of 30, you would need to use a cone angle of 55 (as the entire light cone encloses 110, but PRMan expects a number half of that since it measures from the center), and the penumbra angle remains unchanged. A quick diagram may help:
|<--30-->|<-------50------->|<--30-->| This is Maya's view
|<--30-->| |<--30-->|
|<-------55------->|< ------55------>| This is PRMan's view
MTOR helps with this situation by providing two precomputed variables that you can use in TCL expressions for shaders attached to light sources. These variables are the $CONEANGLE and PENUMBRANGLE parameters, and they are computed as follows:
$CONEANGLE = radians(MayaConeAngle / 2 + MayaPenumbraAngle)
$PENUMBRAANGLE = radians(MayaPenumbraAngle)
By supplying $CONEANGLE and $PENUMBRAANGLE (or deg($CONEANGLE), if your PRMan light shader expects angles in degrees), you can conveniently control the extent of the light cone by setting the Maya cone angle and penumbra angle attribute, and what you see in Maya will match what you get in the PRMan render.