一种用于计算组织切割后新生成模型顶点纹理坐标的方法与流程

文档序号:11951354阅读:来源:国知局

技术特征:

1.一种用于计算组织切割后新生成顶点纹理坐标的方法,其特征在于:所述方法包括如下步骤:

(1)记录所有包含切割路径点集合R,并搜索包含切割路径的三角面片的索引号,记录三角面片索引号集合L;

(2)新生成的模型顶点是否在某一个三角形面片内:遍历判断新生成的模型顶点是否在集合L中的某一个三角形面片内,并且记录相应三角形面片的索引号I;

(3)计算新生成的模型顶点与所在三角形顶点的关系,如果模型顶点在三角形内,计算出与新生成顶点的关系,如果不在所记录的三角形面片内部,则利用点在平面的投影点,计算出与三角形顶点的关系过程如下:

由步骤(2)可知,如果新生成的模型顶点在记录集合L中的某一个的三角形面片内,则记录满足条件的相应的m和k的值,则会有P=A+m*(C-A)+k*(B-A);如果新生成的模型顶点不在三角形面片索引集合L中,则P在所有索引集合L所组成平面的外部,当P位于平面的外部时,根据P在距离最近三角形面片上的投影点P′与所在三角形顶点的关系,间接得到P与所在三角形顶点的关系;

(4)计算新生成的模型顶点的纹理坐标与相应三角形面片顶点的纹理坐标之间关系,即可计算出新生成模型顶点的纹理坐标(u,v)。

2.如权利要求1所述的一种用于计算组织切割后新生成顶点纹理坐标的方法,其特征在于:所述步骤(3)中,求投影点P′的过程如下:

步骤3.1设集合L组成平面的法向量s:{a,b,c},集合L中每个面片的法向量为:si:{ai,bi,ci},则投影面的法向量为:

<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>a</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mi>a</mi> <mi>i</mi> </msub> </mrow> </mtd> <mtd> <mrow> <mi>b</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mi>b</mi> <mi>i</mi> </msub> </mrow> </mtd> <mtd> <mrow> <mi>c</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mi>c</mi> <mi>i</mi> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced>

因此可以设每个三角形面片si采用三个顶点{vi0,vi1,vi2},顶点分别设为vi0(xvi0,yvi0,zvi0),vi1(xvi1,yvi1,zvi1),vi2(xvi2,yvi2,zvi2)且顶点顺序按逆时针排列,则平面的法向量si为:

<mrow> <msub> <mi>a</mi> <mi>i</mi> </msub> <mi>i</mi> <mo>+</mo> <msub> <mi>b</mi> <mi>i</mi> </msub> <mi>j</mi> <mo>+</mo> <msub> <mi>c</mi> <mi>i</mi> </msub> <mi>k</mi> <mo>=</mo> <mfenced open = "|" close = "|"> <mtable> <mtr> <mtd> <mi>i</mi> </mtd> <mtd> <mi>j</mi> </mtd> <mtd> <mi>k</mi> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>x</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>0</mn> </mrow> </msub> </mrow> </mtd> <mtd> <mrow> <msub> <mi>y</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>0</mn> </mrow> </msub> </mrow> </mtd> <mtd> <mrow> <msub> <mi>z</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>z</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>0</mn> </mrow> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>x</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>x</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>0</mn> </mrow> </msub> </mrow> </mtd> <mtd> <mrow> <msub> <mi>y</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>y</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>0</mn> </mrow> </msub> </mrow> </mtd> <mtd> <mrow> <msub> <mi>z</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>2</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>z</mi> <mrow> <mi>v</mi> <mi>i</mi> <mn>0</mn> </mrow> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

步骤3.2由步骤3.1得到平面的法向量s:{a,b,c},接着下来,需要遍历找到P点沿着s方向与L集合中某一个三角形面片相交,求相交过程如下:

经过P点s方向的射线方程:

F=P+ts

每个三角形面片的平面方程为:

si*(F-vi0)=0

联立连个方程式得到:

<mrow> <mi>t</mi> <mo>=</mo> <mfrac> <mrow> <msub> <mi>s</mi> <mi>i</mi> </msub> <mo>&CenterDot;</mo> <msub> <mi>v</mi> <mrow> <mi>i</mi> <mn>0</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>s</mi> <mi>i</mi> </msub> <mo>&CenterDot;</mo> <mi>P</mi> </mrow> <mrow> <msub> <mi>s</mi> <mi>i</mi> </msub> <mo>&CenterDot;</mo> <mi>s</mi> </mrow> </mfrac> </mrow>

若t>=0,则射线与平面相交,且交点为P+ts,则P′=P+ts,再根据步骤(2)计算P′在所在三角形面片顶点的关系,则得到新生成顶点P与所在投影三角形面片顶点的关系。

3.如权利要求1所述的一种用于计算组织切割后新生成顶点纹理坐标的方法,其特征在于:所述步骤(4)中,所述计算新生成的模型顶点的纹理坐标与相应三角形面片顶点的纹理坐标之间的关系,方法如下:

假设ΔABC顶点的纹理坐标Auv=(u0,v0),Buv=(u1,v1),Cuv=(u2,v2)新生成模型顶点P的纹理坐标为Puv(u,v),由步骤(3)所得新生成顶点和所在三角形面片的关系式:P=A+m*(C-A)+k*(B-A),则有如下关系式:

Puv=Auv+m*(Cuv-Auv)+k*(Buv-Auv)

因此得到新生成模型顶点P的纹理坐标为Puv(u,v)。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1