所以,在HTML5中,我理解SVG与Canvas的不同之处在于SVG是声明性的,而Canvas是必不可少的。在我看来,可以使用更好的声明性技术来定义形状,然后声明一个视点,让浏览器计算要移除的隐藏曲面。
经过一些谷歌搜索后我找不到多少,有这个链接
https://css-tricks.com/almanac/properties/b/backface-visibility/
但这没有多大帮助。
是否有一个javascript库可以在新的扩展标准酿造中隐藏表面去除?
因此,作为一个示例用例,我想将一个多维数据集定义为12个边,在表面上声明这样的不透明度(以便不对其进行线框化)并让浏览器图形不显示“后”表面。
答案 0 :(得分:1)
当您想要渲染3d时,有两种解决方案。首先是从后向前渲染每个三角形/四边形。
这通常可以通过平均顶点的位置来计算形状的中间,然后根据z坐标对三角形进行排序来完成。
对它进行排序后,按顺序渲染它们。
另一种解决方案基本上就是你要找的东西。您需要通过在2个侧向量上使用叉积来计算法向量。绘制立方体时,需要在三角形法线和相机的方向向量上使用点积,如果此值小于或等于0(两个向量之间的角度大于90°),则不要画三角形。