如何做纹理映射,实际上就是如何把一张贴图上的点与模型上面上的点想对应起来。计算过程用到向量相关知识,因为都是在二维平面上来操作的。举个例子:
如下图:
如果要把一张图贴在一个面上,看右边的图,绿色框是模型,黑色框是贴图,要把黑色框贴好,像左边图一样。那么c到c'是如何处理呢?
如果把c和c'简单的设置为想关联,就会出现拉伸了,就像一根橡皮被拉伸成1.5倍的情况。左边的图并没有拉伸过。这里也许需要知道一个重要的原理:
uv的取值范围是在[0,1],但是如果超出了这个范围,citymaker api中就会处理成重复(当然,事先得设置
gviTextureWrapMode为gviTextureWrapRepeat)。
那c也c'显示不是拉伸情况,只能是1:1的情况,然后超出的部分,由自动重复的贴图自己来填充就OK了!
一张图说明原理:
---------------------
关于matiral的gviTextureWrapMode枚举:
gviTextureWrapMode表示纹理坐标的计算方式。一般纹理坐标0-1,如果超出这个范围,这两个枚举项就会起作用。
枚举值:
gviTextureWrapRepeat
重复模式
gviTextureWrapClampToEdge
截取模式(默认值)
欢迎批评指正,转载请注明出处和作者
---------------------------------------------------------------------------
承接CityMaker各类二次开发、数据生产、数据加工处理等服务。
有意者请联系QQ:gispar@qq.com