【问题标题】:show overlapping volume of two objects in different color in three.js在three.js中以不同颜色显示两个对象的重叠体积
【发布时间】:2016-01-25 22:42:15
【问题描述】:

我在 THREE.js 的场景中有两个重叠的对象。我想知道如何以不同的颜色或纹理显示两个对象的重叠体积? 或者至少是两个不同颜色的物体的组合,呈现出另一种颜色?例如,如果两个对象为红色和蓝色,则重叠体积显示重叠颜色为紫色。先感谢您!像这样:

【问题讨论】:

  • 又快又脏——你有没有试过把两个物体的材质参数设置为:透明:真,不透明度:0.6
  • 谢谢,实际上,当我将其中一个的 renderOrder 更改为 1 时,这有效。但问题是我的一个对象需要 100% 不透明!
  • 嗯,我很难理解您希望如何“看到”表面不透明的 3D 对象的内部体积。如果您发布了屏幕截图或提供了更多关于您想要实现的目标的描述,它可能会有所帮助。
  • 谢谢!我添加了一张图片。这就是我想做的:)
  • 你能举一个活生生的例子来证明你的问题吗?这是a fiddle,您可以编辑。

标签: javascript three.js


【解决方案1】:

您还可以考虑通过实现 ThreeCSG.js 之类的东西来使用布尔运算。

假设您有两个网格 cube_one 和 cube_two。然后你可以这样做:

cube_one_bsp = new ThreeBSP( cube_one );
cube_two_bsp = new ThreeBSP( cube_two );
cube_three_bsp = cube_one_bsp.intersect( cube_two_bsp );

现在您可以在使用toMesh 方法将THREE.Mesh 转换回THREE.Mesh 时为cube_three 提供任何材料:

mesh = cube_three_bsp.toMesh( material );

现在您将相交对象作为THEE.Mesh 与您的自定义材质...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2015-11-12
    • 2014-03-13
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多