Hydra: add support for legacy hair particles #114197

Merged
Brecht Van Lommel merged 27 commits from DagerD/blender:hydra-add-legacy-hair-particles into main 2024-01-11 15:44:35 +01:00
1 changed files with 13 additions and 11 deletions
Showing only changes of commit cad435a434 - Show all commits

View File

@ -310,19 +310,21 @@ void HairData::write_uv_maps()
particle_system->particles->num :
particle_system->particles->num_dmcache;
const MFace *mface = static_cast<const MFace *>(
CustomData_get_layer(&psmd->mesh_final->fdata_legacy, CD_MFACE));
const MTFace *mtface = static_cast<const MTFace *>(
CustomData_get_layer(&psmd->mesh_final->fdata_legacy, CD_MTFACE));
float r_uv[2] = {0.0f, 0.0f};
if (ELEM(psmd->psys->part->from, PART_FROM_FACE, PART_FROM_VOLUME) &&
!ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) {
const MFace *mface = static_cast<const MFace *>(
CustomData_get_layer(&psmd->mesh_final->fdata_legacy, CD_MFACE));
const MTFace *mtface = static_cast<const MTFace *>(
CustomData_get_layer(&psmd->mesh_final->fdata_legacy, CD_MTFACE));
float r_uv[2];
if (mface && mtface) {
mtface += num;
psys_interpolate_uvs(mtface, mface->v4, particle_system->particles->fuv, r_uv);
}
for (int i = 0; i < particle_system->totpart; i++) {
uvs_.push_back(pxr::GfVec2f(r_uv[0], r_uv[1]));
if (mface && mtface) {
mtface += num;
psys_interpolate_uvs(mtface, mface->v4, particle_system->particles->fuv, r_uv);
}
}
uvs_.push_back(pxr::GfVec2f(r_uv[0], r_uv[1]));
}
}