我在 Javascript/canvas 中构建了一个 3d 显示应用程序,它运行良好。我最近实现了映射纹理的能力。
我从 stl 格式导入 3d 模型,效果很好,因为它们只存储 tris,所以很容易导入,因为我不必分解它们,但它们不存储纹理。
存储纹理的方式就是这样
textureObject(){
this.img=image //Js image object
this.triArray=[[x1,y1],[x2,y2]...]//Map of where polys
function returnImage(int i){
//returns a cropped triangle around the coordinates in the triArray.
}
}
实际的实现有点不同,但这就是它的肉和肉汁。虽然它不是完美的纹理映射,但它只是一个仿射变换,看起来很丑陋,但对我来说已经足够了。
我的问题是我不确定如何从已经创建的 3d 对象中保存 triArray,这样我就不必仅为该项目创建全新的文件格式。
我想我有两个选择:
如果有一个将纹理坐标信息存储在文件中的文件格式,则为另一种文件格式制作一个导入器。(但是哪种文件格式?)
或者
或者是否有一种将纹理映射到对象的标准方法,然后我可以实现这些方法来创建我的数组?(方法是什么?)