js -渲染一个对象总是在顶部
Three.js - Render an object always on top
我试图实现一个跟随屏幕上鼠标的命令箭头,但有时它最终隐藏在另一个对象后面。有没有什么方法可以调整z-buffer或者别的什么来使箭头总是在上面。我不希望在顶部创建第二个场景(如图所示):Three.js -几何体在另一个几何体之上。谢谢。
我用
mesh.renderOrder = zindex || 999;
mesh.material.depthTest = false;
mesh.material.depthWrite = false;
mesh.onBeforeRender = function (renderer) { renderer.clearDepth(); };
你能进一步解释一下什么是"command arrow"吗?如果你想要一些跟随鼠标的2D内容,一个选择是创建如下内容:
<div id="mouseHover" style="position: absolute; z-index: 999"></div>
然后运行脚本来更新div的x和y位置:
<script>
<!-- if using a library like jQuery, which has a mousemove event handler -->
$('body').mousemove({
document.getElementById('mouseHover').style.left = e.pageX;
document.getElementById('mouseHover').style.top = e.pageY;
});
</script>
如果你真的需要一些跟随鼠标的3D渲染,问题就在于相对位置。您可以创建具有自己场景的THREE.WebGLRenderTarget
,在透明背景上显示3D对象,将其映射到纹理,并将其应用于悬浮在相机前的THREE.PlaneGeometry
。我会为您提供一些代码,但我需要更多地了解您的特定设置。
这对我有用
mesh.renderOrder = zindex || 999
mesh.material.depthTest = false
// UPDATED If you using some models with transparent materials
mesh.material.transparent = true
你不需要将depthWrite设置为false。关于depthTest和depthWrite的更多信息你可以在这个答案中得到- https://stackoverflow.com/a/37651610/14208501。
如果你有一些模型有透明材料添加到你的线也透明,因为透明材料在三个js中有自己的排序和渲染后的非透明材料
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Protractor:element.getText()返回一个对象,而不是String
- 如何使用jQuery添加另一个对象的高度作为边距
- 计算从一个对象到另一个对象的路径并沿其移动
- 如何将一个对象添加到每个对象数组中
- 为了避免创建全局变量,可以将所有变量分配给一个对象吗
- 将javascript对象(属性+值)合并到一个对象中
- 尝试简化检查对象键是否为true并将其推送到另一个对象
- 从 javascript 中的对象方法返回一个对象
- 响应应包含一个对象,但得到的却是GET操作的数组
- 下划线.js,从一个对象中获取两个项目并添加到顶部
- js -渲染一个对象总是在顶部