Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

基本模型封装方案的思考

  对于球体、立方体,这样的基本模型。我一直都是直接写顶点或使用数学方法去计算的,并没有把它们封装成库。如果把这些模型都封装起来当然会很好用,但是我一直在思考这个封装的方案,貌似没有任何方案是可行的。只要对他们封装,就一定会失去很多功能。
  绘制一个物体时不需要去计算顶点,直接new一个对象那当然很方便。但是物体除了顶点和法向量之外还有贴图坐标,这就是问题的关键。对于同样的物体,顶点和法向量都是固定不变的,要计算这个当然没问题。但是贴图坐标显然不是固定的,不仅是位置、大小不固定,甚至有时贴图的方式是需要特定的顶点算法的。比如球体应该用标准方程去计算顶点还是用均匀分布去计算顶点或者是用多面体去计算顶点。这些顶点的计算方法不同直接影响到贴图。而计算方法的种类貌似并不固定,上面说的三种也只是我现在想到的球体顶点算法而已,用户也许会想到更多奇葩的算法,需要更奇葩的贴图方式。所以要是把顶点的计算给封装了,那么就会给贴图带来很大的局限性。
  3DMax这样的3D软件当然会自带各种基本模型,而且还可以贴图。但是3DMax对于曲面贴图的功能就有点弱了。我觉得3DMax就是没解决这个问题而直接封装了基本模型。当然,还有Maya这样的专业3D软件,它对曲面贴图做的比3DMax好些。它以独立的方式计算贴图,不过算法依然被固定,使用上还是有局限性,不过对于一般的需求已经可以满足了。
  但是3D软件毕竟和封装3D库不同,我们要考虑程序的效率问题,所以这样的解决办法不适合我们。但是可以从中吸取一些概念来使用。我们无法把贴图坐标和物体顶点封装在一起,那么我们也把它分开封装,让用户自己去组合他们。我们要绘制一个基本物体时最麻烦的部分是要把物体方程的数学模型转换成程序模型。只要把这个步骤封装好,用户要做的只有遍历模型函数的自变量而已,这完全是不费脑子的事情。
  我想到的解决方案大概就是这样的步骤,不过目前还没有去实现它。另外,对于遍历自变量用的循环也许还可以进一步封装,这就是优化方面的事情了。
网名:
54.226.58.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^