forked from bartvdbraak/blender
Code comments regarding last commit (forgotten to add before)
Using an arbitrary face as the source of the UV data is mostly fine, as vertices on seams will generally map to different parts of the texture that have the same color. This is regarding fed853ea782211298c902759ec8cd8e455d8b41d
This commit is contained in:
parent
fed853ea78
commit
5e9ad8065a
@ -3410,6 +3410,9 @@ static int get_particle_uv(DerivedMesh *dm, ParticleData *pa, int index, const f
|
|||||||
if (from_vert) {
|
if (from_vert) {
|
||||||
mf = dm->getTessFaceDataArray(dm, CD_MFACE);
|
mf = dm->getTessFaceDataArray(dm, CD_MFACE);
|
||||||
|
|
||||||
|
/* This finds the first face to contain the emitting vertex,
|
||||||
|
* this is not ideal, but is mostly fine as UV seams generally
|
||||||
|
* map to equal-colored parts of a texture */
|
||||||
for (int j = 0; j < dm->getNumTessFaces(dm); j++, mf++) {
|
for (int j = 0; j < dm->getNumTessFaces(dm); j++, mf++) {
|
||||||
if (ELEM(i, mf->v1, mf->v2, mf->v3, mf->v4)) {
|
if (ELEM(i, mf->v1, mf->v2, mf->v3, mf->v4)) {
|
||||||
i = j;
|
i = j;
|
||||||
|
@ -440,6 +440,10 @@ static void distribute_from_verts_exec(ParticleTask *thread, ParticleData *pa, i
|
|||||||
zero_v4(pa->fuv);
|
zero_v4(pa->fuv);
|
||||||
|
|
||||||
if (pa->num != DMCACHE_NOTFOUND && pa->num < ctx->dm->getNumVerts(ctx->dm)) {
|
if (pa->num != DMCACHE_NOTFOUND && pa->num < ctx->dm->getNumVerts(ctx->dm)) {
|
||||||
|
|
||||||
|
/* This finds the first face to contain the emitting vertex,
|
||||||
|
* this is not ideal, but is mostly fine as UV seams generally
|
||||||
|
* map to equal-colored parts of a texture */
|
||||||
for (int i = 0; i < ctx->dm->getNumTessFaces(ctx->dm); i++, mface++) {
|
for (int i = 0; i < ctx->dm->getNumTessFaces(ctx->dm); i++, mface++) {
|
||||||
if (ELEM(pa->num, mface->v1, mface->v2, mface->v3, mface->v4)) {
|
if (ELEM(pa->num, mface->v1, mface->v2, mface->v3, mface->v4)) {
|
||||||
unsigned int *vert = &mface->v1;
|
unsigned int *vert = &mface->v1;
|
||||||
|
@ -492,6 +492,9 @@ static int rna_ParticleSystem_tessfaceidx_on_emitter(ParticleSystem *particlesys
|
|||||||
|
|
||||||
*r_fuv = &particle->fuv;
|
*r_fuv = &particle->fuv;
|
||||||
|
|
||||||
|
/* This finds the first face to contain the emitting vertex,
|
||||||
|
* this is not ideal, but is mostly fine as UV seams generally
|
||||||
|
* map to equal-colored parts of a texture */
|
||||||
for (int i = 0; i < totface; i++, mface++) {
|
for (int i = 0; i < totface; i++, mface++) {
|
||||||
if (ELEM(num, mface->v1, mface->v2, mface->v3, mface->v4)) {
|
if (ELEM(num, mface->v1, mface->v2, mface->v3, mface->v4)) {
|
||||||
return i;
|
return i;
|
||||||
@ -531,6 +534,9 @@ static int rna_ParticleSystem_tessfaceidx_on_emitter(ParticleSystem *particlesys
|
|||||||
|
|
||||||
*r_fuv = &parent->fuv;
|
*r_fuv = &parent->fuv;
|
||||||
|
|
||||||
|
/* This finds the first face to contain the emitting vertex,
|
||||||
|
* this is not ideal, but is mostly fine as UV seams generally
|
||||||
|
* map to equal-colored parts of a texture */
|
||||||
for (int i = 0; i < totface; i++, mface++) {
|
for (int i = 0; i < totface; i++, mface++) {
|
||||||
if (ELEM(num, mface->v1, mface->v2, mface->v3, mface->v4)) {
|
if (ELEM(num, mface->v1, mface->v2, mface->v3, mface->v4)) {
|
||||||
return i;
|
return i;
|
||||||
|
Loading…
Reference in New Issue
Block a user