26 switch (blender_type) {
28 return pxr::SdfValueTypeNames->FloatArray;
30 return pxr::SdfValueTypeNames->UCharArray;
32 return pxr::SdfValueTypeNames->IntArray;
34 return pxr::SdfValueTypeNames->Float2Array;
36 return pxr::SdfValueTypeNames->Float3Array;
38 return pxr::SdfValueTypeNames->StringArray;
40 return pxr::SdfValueTypeNames->BoolArray;
43 return use_color3f_type ? pxr::SdfValueTypeNames->Color3fArray :
44 pxr::SdfValueTypeNames->Color4fArray;
46 return pxr::SdfValueTypeNames->QuatfArray;
58 map.add_new(pxr::SdfValueTypeNames->UCharArray,
CD_PROP_INT8);
61 map.add_new(pxr::SdfValueTypeNames->TexCoord2dArray,
CD_PROP_FLOAT2);
62 map.add_new(pxr::SdfValueTypeNames->TexCoord2fArray,
CD_PROP_FLOAT2);
63 map.add_new(pxr::SdfValueTypeNames->TexCoord2hArray,
CD_PROP_FLOAT2);
64 map.add_new(pxr::SdfValueTypeNames->TexCoord3dArray,
CD_PROP_FLOAT2);
65 map.add_new(pxr::SdfValueTypeNames->TexCoord3fArray,
CD_PROP_FLOAT2);
66 map.add_new(pxr::SdfValueTypeNames->TexCoord3hArray,
CD_PROP_FLOAT2);
71 map.add_new(pxr::SdfValueTypeNames->Normal3fArray,
CD_PROP_FLOAT3);
72 map.add_new(pxr::SdfValueTypeNames->Normal3dArray,
CD_PROP_FLOAT3);
73 map.add_new(pxr::SdfValueTypeNames->Normal3hArray,
CD_PROP_FLOAT3);
74 map.add_new(pxr::SdfValueTypeNames->Vector3fArray,
CD_PROP_FLOAT3);
75 map.add_new(pxr::SdfValueTypeNames->Vector3hArray,
CD_PROP_FLOAT3);
76 map.add_new(pxr::SdfValueTypeNames->Vector3dArray,
CD_PROP_FLOAT3);
77 map.add_new(pxr::SdfValueTypeNames->Color3fArray,
CD_PROP_COLOR);
78 map.add_new(pxr::SdfValueTypeNames->Color3hArray,
CD_PROP_COLOR);
79 map.add_new(pxr::SdfValueTypeNames->Color3dArray,
CD_PROP_COLOR);
80 map.add_new(pxr::SdfValueTypeNames->Color4fArray,
CD_PROP_COLOR);
81 map.add_new(pxr::SdfValueTypeNames->Color4hArray,
CD_PROP_COLOR);
82 map.add_new(pxr::SdfValueTypeNames->Color4dArray,
CD_PROP_COLOR);
84 map.add_new(pxr::SdfValueTypeNames->BoolArray,
CD_PROP_BOOL);
92 if (value ==
nullptr) {
100 const pxr::UsdTimeCode timecode,
106 const pxr::TfToken pv_name = pxr::UsdGeomPrimvar::StripPrimvarsName(primvar.GetPrimvarName());
109 pv_name.GetText(), domain, data_type);
114 primvar, timecode, face_indices, attribute.span.typed<
float>());
118 primvar, timecode, face_indices, attribute.span.typed<
int8_t>());
122 primvar, timecode, face_indices, attribute.span.typed<
int>());
126 primvar, timecode, face_indices, attribute.span.typed<
float2>());
130 primvar, timecode, face_indices, attribute.span.typed<
float3>());
133 const pxr::SdfValueTypeName pv_type = primvar.GetTypeName();
135 pxr::SdfValueTypeNames->Color3fArray,
136 pxr::SdfValueTypeNames->Color3hArray,
137 pxr::SdfValueTypeNames->Color3dArray))
140 primvar, timecode, face_indices, attribute.span.typed<
ColorGeometry4f>());
144 primvar, timecode, face_indices, attribute.span.typed<
ColorGeometry4f>());
149 primvar, timecode, face_indices, attribute.span.typed<
bool>());
165 const pxr::UsdTimeCode timecode,
166 const pxr::UsdGeomPrimvar &primvar,
167 pxr::UsdUtilsSparseValueWriter &value_writer)
172 attribute.typed<
float>(), timecode, primvar, value_writer);
176 attribute.typed<
int8_t>(), timecode, primvar, value_writer);
180 attribute.typed<
int>(), timecode, primvar, value_writer);
184 attribute.typed<
float2>(), timecode, primvar, value_writer);
188 attribute.typed<
float3>(), timecode, primvar, value_writer);
192 attribute.typed<
bool>(), timecode, primvar, value_writer);
195 if (primvar.GetTypeName() == pxr::SdfValueTypeNames->Color3fArray) {
205 if (primvar.GetTypeName() == pxr::SdfValueTypeNames->Color3fArray) {
void copy_primvar_to_blender_attribute(const pxr::UsdGeomPrimvar &primvar, const pxr::UsdTimeCode timecode, const eCustomDataType data_type, const bke::AttrDomain domain, const OffsetIndices< int > face_indices, bke::MutableAttributeAccessor attributes)