@
cqcn1991 Three.js 目前还只是显示, 因为WebGL推出主要目标是让浏览器直接支持3D内容的显示, 而 Three.js 是一个 WebGL API 的封装, 也许将来会集成一些 3d Model 的计算功能, 只不过这种功能完全可以由另一个开源的 Library 来实现, 也许现在就有这种 Library, 但还没找到。
其实我想你的疑问可能不是这些,而是到底 3d 模型在程序中是如何组织的, 粗略的说分两种应用场合, 一种显示交互, 第二种是计算分析。
几乎所有平台上的3D游戏都是第一种情况, 这种情况下 3d 模型在内存的存储完全简单化、标准化--
--只有顶点和三角形(四边形也好, 新技术Tessellation等在这里可以忽略)
3d 模型文件中最简单的是 .obj 格式, 是纯文本的。
.obj 格式的文件也最接近这种内存中的组织形式:
比如一个三角形
v 1.000000 1.000000 1.000000
v 2.000000 1.000000 1.000000
v 1.000000 2.000000 1.000000
f 1 2 3
v 代表"顶点",f 代表“面"(三角形、四边形)。
如果是立方体,那就是8个顶点,和6个四边形,或者12个三角形
游戏中没有另外存储三角形的“边”, 因为边已经隐含在"面"中了。
游戏在运行时几乎不关心3D模型的形体/形状, 物理引擎部分除外,游戏只是不断的把视野中的三角形推送给显卡来显示,无论是一个还是几十万个。
第二中场合 计算和分析主要应用在工程、医学、科学领域,这些情况下就复杂的多,
数据存储有 3d参数曲线、参数曲面 和可用参数方程表示的3d几何体,我是不了解,我主要是做显示交互这块的。
如果只是需要计算截面,可以不用管那么复杂数据存储, 游戏那种3D数据格式同样可以拿来计算。
向楼上说的那样,可以用类似3D打印的求界面的方法
https://ravehgonen.wordpress.com/tag/plane-triangle-intersection/