Date: Thu, 28 Mar 2024 22:12:38 +0000 (UTC) Message-ID: <1774511290.37.1711663958491@ip-10-0-0-233.us-west-2.compute.internal> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_36_510698634.1711663958489" ------=_Part_36_510698634.1711663958489 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Primitive Variables (also known as primvars) are da= ta stored on objects. This data can be used for shading variation, mu= ch like user attributes.&nbs= p; There are two main distinctions between the two - primvars cannot vary a= cross instances, but they allow more specific variation - constant, un= iform, varying, vertex, and facevarying.
Constant: On=
e value remains constant over the entire surface primitive. This is the onl=
y level that can be achieved with user attributes.
Unifor=
m: One value remains co=
nstant for each uv patch segment of the surface primitive.
=
Varying: Four v=
alues are interpolated over each uv patch segment of the surface. Bilinear =
interpolation is used for interpolation between the four values.
Vertex: V=
alues are interpolated between each vertex in the surface primitive. The ba=
sis function of the surface is used for interpolation between vertices.&nbs=
p;
Facevarying: For polygons and subdivision surfaces, four values are interpola=
ted over each face of the mesh. Bilinear interpolation is used for interpol=
ation between the four values.
RenderMan for Katana supports primitive variables using Katana's standar= d A= rbitrary Attribute convention.
Here is the list of supported values for= geometry.arbitrary.<= ;group>.outputType. Katana's documentat= ion lists other types, but these are the only ones supported by RenderMan= span>:
Here is an example OpScript showing how = to set an arbitrary constant color primvar:
Interface.SetAttr(= "geometry.arbitrary. |
Typically, production workflows will export these arbitrary attributes a= s a part of the alembic or USD asset, so no set up inside of Katana is requ= ired. Otherwise, you can use an OpScript to set the geometry.arbitrar= y attribute directly on a geometry location - the attribute is not inherita= ble.
Primvars are read by various shading plugins. PxrPrimvar, PxrSeExpr<= /a>, PxrVariable, and PxrVary are some plugins distributed with Rend= erMan that use arbitrary primvars.