CityMaker 8二次开发之顶点数组(IFloatArray)的构成

24 篇文章 0 订阅
22 篇文章 0 订阅

IFloatArray是api中用于存储数组的一个接口。

IFloatArray如何构成?举个栗子就明白了。如图:


这个点的FloatArray构成就是x=FloatArray.get(1),y=FloatArray.get(2),y=FloatArray.get(3),

如果你想遍历所有的节点,就必须这样操作:

List<IPoint> pts = new List<IPoint>();
IFloatArray arrayVector = drawPrimitive.VertexArray;
for (int n = 0; n < arrayVector.Length;)
{        
IPoint pt = ......;		
pt.X = arrayVector.Get(n);	
pt.Y = arrayVector.Get(n + 1);	
pt.Z = arrayVector.Get(n + 2);		
pts.Add(pt);		
n = n + 3;
}

IFloatArray用作TexcoordArray存储时,2个数值来表达纹理坐标,如:

List<IPoint> texPts = new List<IPoint>();
IFloatArray arrayVector = drawPrimitive.TexcoordArray;
for (int n = 0; n < arrayVector.Length;)
{
        IPoint pt = ......;
	
	pt.X = arrayVector.Get(n);
	pt.Y = arrayVector.Get(n + 1);
	
	texPts.Add(pt);
	
	n = n + 2;
}

注意:

图像上的位置长宽两个方向都是0到1的长度,比如对应图像最中间的位置,相应的纹理坐标就是0.5,0.5;


所谓贴图,就是将在模型的某个面上的节点,设置合适的纹理坐标。看上图就很清楚了,给模型上每个点设置合适的TexcoordArray(设置IDrawPrimitive.TexcoordArray)。

特别注意一下,这个TexcoordArray(2个数)顺序与VertexArray(3个数)顺序是一致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值