首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用Threejs改变object的zOrder?

如何用Threejs改变object的zOrder?
EN

Stack Overflow用户
提问于 2012-10-01 09:24:21
回答 1查看 22.6K关注 0票数 31

我使用webgl渲染器制作了一个场景,其中我放置了多个可以选择和移动的3D对象。然而,当一个对象被选中时,我想画出它的轴。在物体的中心绘制线条没有问题,但我希望它们出现在场景中任何其他物体的前面,这样即使其他物体在前面也是可见的-就像在Blender中一样。

我尝试使用renderDepth参数,但我不认为我了解如何使用它,我没有得到任何结果。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-01 10:39:40

如果您希望一些对象呈现在“顶部”或“前面”,一个技巧是创建两个场景--第一个场景是您的常规场景,第二个场景包含您想要放在顶部的对象。

首先,设置

代码语言:javascript
复制
renderer.autoClear = false;

然后创建两个场景

代码语言:javascript
复制
var scene = new THREE.Scene();
var scene2 = new THREE.Scene();

像往常一样将对象添加到第一个场景中,并将要放在顶部的对象添加到第二个场景中。

然后,在您的render()函数中,执行以下操作:

代码语言:javascript
复制
renderer.clear();
renderer.render( scene, camera );
renderer.clearDepth();
renderer.render( scene2, camera );

这将渲染第一个场景,清除深度缓冲区,然后在顶部渲染第二个场景。

这是一个小提琴:http://jsfiddle.net/d9Lzdkkr/

编辑:另一种解决方案是只有一个场景,但使用以下模式:

代码语言:javascript
复制
mesh.renderOrder = 999;
mesh.onBeforeRender = function( renderer ) { renderer.clearDepth(); };

如果网格只有一种材质,它将在“顶部”渲染。

three.js r.85

票数 81
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12666570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档