本文共 603 字,大约阅读时间需要 2 分钟。
例程中主要用到的脚本有位于Assets/MRTK/Core/Utilities/StandardShader路径下的ClippingPlane.cs
、ClippingBox.cs、ClippingSphere.cs、ClippingPrimitive.cs(继承关系),位于Assets/MRTK/Core/StandardAssets/Shaders路径下的MixedRealityStandard.shader
着色器,以及位于Assets/MRTK/Core/StandardAssets/Shaders路径下的MixedRealityShaderUtils.cginc
。它们三个的关系如下:
面切割算法:对于心脏模型的每一个片元,在世界坐标系下,使用平面的法线向量n与平面中心点到待渲染点的方向向量d做点乘。根据计算结果的正负号将模型划分为平面的内侧和外侧两部分。
球切割算法:对于心脏模型的每一个片元,计算其到球心的距离,如果小于半径,则位于内侧,反之,位于外侧。 立方体切割算法:对于心脏模型的每一个片元,将片元坐标变换到立方体的模型坐标系下得到坐标position,用position的每个坐标分量取绝对值再减去立方形大小。最终得到的坐标中最大值大于零的,说明在立方体外,最大值小于零的说明在立方体内。转载地址:http://uloen.baihongyu.com/