Ejemplo n.º 1
0
VertRen *RE_vertren_copy(ObjectRen *obr, VertRen *ver)
{
	VertRen *v1= RE_findOrAddVert(obr, obr->totvert++);
	float *fp1, *fp2;
	int *int1, *int2;
	int index= v1->index;
	
	*v1= *ver;
	v1->index= index;

	fp1= RE_vertren_get_stress(obr, ver, 0);
	if (fp1) {
		fp2= RE_vertren_get_stress(obr, v1, 1);
		memcpy(fp2, fp1, RE_STRESS_ELEMS*sizeof(float));
	}
	fp1= RE_vertren_get_rad(obr, ver, 0);
	if (fp1) {
		fp2= RE_vertren_get_rad(obr, v1, 1);
		memcpy(fp2, fp1, RE_RAD_ELEMS*sizeof(float));
	}
	fp1= RE_vertren_get_strand(obr, ver, 0);
	if (fp1) {
		fp2= RE_vertren_get_strand(obr, v1, 1);
		memcpy(fp2, fp1, RE_STRAND_ELEMS*sizeof(float));
	}
	fp1= RE_vertren_get_tangent(obr, ver, 0);
	if (fp1) {
		fp2= RE_vertren_get_tangent(obr, v1, 1);
		memcpy(fp2, fp1, RE_TANGENT_ELEMS*sizeof(float));
	}
	int1= RE_vertren_get_origindex(obr, ver, 0);
	if (int1) {
		int2= RE_vertren_get_origindex(obr, v1, 1);
		memcpy(int2, int1, RE_VERT_ORIGINDEX_ELEMS*sizeof(int));
	}
	return v1;
}
Ejemplo n.º 2
0
static void bake_single_vertex(BakeShade *bs, VertRen *vert, float u, float v)
{
	int *origindex, i;
	MLoopCol *basevcol;
	MLoop *mloop;

	origindex = RE_vertren_get_origindex(bs->obi->obr, vert, 0);
	if (!origindex || *origindex == ORIGINDEX_NONE)
		return;

	/* Search for matching vertex index and apply shading. */
	for (i = 0; i < bs->mpoly->totloop; i++) {
		mloop = bs->mloop + i;
		if (mloop->v != *origindex)
			continue;
		basevcol = bs->vcol;
		bs->vcol = basevcol + i;
		do_bake_shade(bs, 0, 0, u, v);
		bs->vcol = basevcol;
		break;
	}
}