Javascript 带插入阴影的文本3.js
我需要在three.js中的对象上创建带有插入阴影的文本,如下所示:Javascript 带插入阴影的文本3.js,javascript,three.js,Javascript,Three.js,我需要在three.js中的对象上创建带有插入阴影的文本,如下所示: 类似于带有雕刻文字的戒指。我认为更简单的方法是使用a进行雕刻,至少如果文字不必是动态的()。即使它需要是动态的,在画布中动态创建法线贴图可能比实际创建雕刻几何体更容易 另一个选择是实际创建包含雕刻的几何体。为此,您可能希望查看-库,让您在几何体上使用布尔运算符:创建3D文本网格,扭曲并将其与环的曲率对齐,最后从环网格中减去它。这应该会给你一枚刻字的戒指 事实上,我很好奇这到底是如何实现的,并且在这里实现了非常类似的东西:()
类似于带有雕刻文字的戒指。我认为更简单的方法是使用a进行雕刻,至少如果文字不必是动态的()。即使它需要是动态的,在画布中动态创建法线贴图可能比实际创建雕刻几何体更容易 另一个选择是实际创建包含雕刻的几何体。为此,您可能希望查看-库,让您在几何体上使用布尔运算符:创建3D文本网格,扭曲并将其与环的曲率对齐,最后从环网格中减去它。这应该会给你一枚刻字的戒指 事实上,我很好奇这到底是如何实现的,并且在这里实现了非常类似的东西:()。 本质上,这是使用ThreeCSG从圆柱体几何体中减去文本几何体,如下所示:
const textBSP = new ThreeBSP(textGeometry);
const cylinderBSP = new ThreeBSP(cylinderGeometry);
const resultGeometry = cylinderBSP.subtract(textBSP).toGeometry();
scene.add(new THREE.Mesh(resultGeometry, new THREE.MeshStandardMaterial());
事实证明,threeCSG创建的细分非常慢(我必须将其移动到worker中,以便页面不会冻结近10秒)。现在看起来不太好,因为计算出的法线仍然有一个问题,我还没有弄清楚
第三种选择是结合使用置换贴图和法线贴图。
这在处理过程中会更容易、更快,但您需要添加大量顶点,以便在希望发生置换的位置提供顶点。这里是mrdoob的一小段代码,可以帮助您根据位移创建法线贴图:我认为更简单的方法是使用a进行雕刻,至少如果文本不必是动态的()。即使它需要是动态的,在画布中动态创建法线贴图可能比实际创建雕刻几何体更容易 另一个选择是实际创建包含雕刻的几何体。为此,您可能希望查看-库,让您在几何体上使用布尔运算符:创建3D文本网格,扭曲并将其与环的曲率对齐,最后从环网格中减去它。这应该会给你一枚刻字的戒指 事实上,我很好奇这到底是如何实现的,并且在这里实现了非常类似的东西:()。 本质上,这是使用ThreeCSG从圆柱体几何体中减去文本几何体,如下所示:
const textBSP = new ThreeBSP(textGeometry);
const cylinderBSP = new ThreeBSP(cylinderGeometry);
const resultGeometry = cylinderBSP.subtract(textBSP).toGeometry();
scene.add(new THREE.Mesh(resultGeometry, new THREE.MeshStandardMaterial());
事实证明,threeCSG创建的细分非常慢(我必须将其移动到worker中,以便页面不会冻结近10秒)。现在看起来不太好,因为计算出的法线仍然有一个问题,我还没有弄清楚
第三种选择是结合使用置换贴图和法线贴图。
这在处理过程中会更容易、更快,但您需要添加大量顶点,以便在希望发生置换的位置提供顶点。以下是mrdoob的一小段代码,可以帮助您根据位移创建法线贴图:文本需要动态创建,因此在这种情况下,贴图不是一个好主意。是什么阻止您动态生成纹理?文本需要动态创建,在这种情况下,贴图不是一个好主意。是什么阻止你动态生成纹理?