我使用three.js
如何控制渲染顺序?假设我有三个平面几何,并且想要以特定顺序渲染它们,而不管它们的空间位置如何.
谢谢
在Three.js中是否可以将网格始终渲染在场景的顶部,即使它的位置在所有对象后面?我正在使用网格实现套索选择,我需要在场景的其余部分上渲染选择框.
我希望有2个场景,每个场景都添加了一个相机,我希望它们可以在同一个画布上绘制(但不要划分这个画布).我使用了2个渲染器,它们在同一个画布元素中绘制,但我的问题是第二个渲染器会覆盖第一个,所以我只能看到2个场景中的一个.我尝试 alpha: true了渲染器,setClearColor( 0x000000, 0 );但仍然没有想要的结果.
我希望实现画中画效果,但我希望"内部画面"是透明的(仅绘制对象,而不是背景).
这可能是three.js吗?
谢谢
我正在尝试将多个场景包含到单个webgl渲染器中,如下面的代码所示:
renderer.render(scene1,camera);
renderer.render(scene2,camera);
我面临的问题是,在最后一个场景中,传递给渲染器的对象是否正在绘制,而前一个场景不是.我通过交换上面两行代码证实了这一点.我是threejs的新手,想知道上述是否可以实现?如果你可以指导我支持例子(如果有的话).
谢谢!
我有一组对象,我希望它们始终可见,即使它们被另一个对象遮挡也是如此。它们的对象是网格,而不是粒子或精灵。这是我试图模仿的效果的屏幕截图。这是用 C++ 和 OpenGL 完成的:

请注意红色和绿色三角形以及黑色线条(以及文本)。它们都位于地平面上,但即使绿色机器更近,它们也是可见的。
我可以使用 Three.js 强制可见性吗?
我想瞄准具有相机视觉的物体(因为用户会看到物体,而不是用鼠标指向物体).
我像这样从相机投射光线
rotation.x = camera.rotation.x;
rotation.y = camera.rotation.y;
rotation.z = camera.rotation.z;
raycaster.ray.direction.copy( direction ).applyEuler(rotation);
raycaster.ray.origin.copy( camera.position );
var intersections = raycaster.intersectObjects( cubes.children );
Run Code Online (Sandbox Code Playgroud)
这让我得到了交叉点,但它似乎有时会徘徊.所以我想添加目标(十字准线).那将是光线末端或中间的物体(网格)上的某种东西.
我该如何添加它?当我创建一个常规线时,它位于相机前面,因此屏幕会变黑.
我想在场景中有两个重叠的对象,但是我想定义应该先绘制哪个对象。我在这里有一个代码示例:http : //jsfiddle.net/sg02e5sm/1/
我正在使用renderOrder = 1第二个对象,以使其始终显示在第一个对象的顶部(只要它们具有相同的Z值),但是它不起作用。
我有两块画布。第一个应该是背景,其内容通过原始 WebGL (3D) 渲染。第二个画布应该覆盖第一个画布,并且主要是透明的。它的内容通过 Three.js(3D 内容)呈现。不幸的是,第二个画布不是绘制在第一个画布的上面,而是绘制在它的旁边。
如何使用透明的 Three.js 场景背景在第一个画布上方绘制第二个画布?
更新:
我整合了gaitat的想法。但它仍然无法正常工作(请参阅全屏屏幕截图。由于 Oculus Rift 支持,两次渲染灰色框。)。Canvas 2 仍然不在第一个之上,并且它的背景也不透明。提醒一下:灰色方块是通过原始 WebGL 在名为webglcanvas 的画布上绘制的。该盒子是通过Tripcanvas上的 Three.js 渲染的。
代码 1(画布和 div 的初始化 [Xtend/Java]):
Browser::getDocument().getElementById("view").appendChild(webglDiv)
val Element webGLCanvasDiv = Browser::getDocument().createDivElement()
webGLCanvasDiv.style.setCssText("position: absolute")
webGLCanvasDiv.style.setCssText("z-index: 8")
webGLCanvasDiv.setId("webGLCanvasDiv")
Browser::getDocument().getElementById("webglDiv").appendChild(webGLCanvasDiv)
val webGLCanvas = Browser::getDocument().createCanvasElement()
webGLCanvas.setWidth(viewportWidth)
webGLCanvas.setHeight(viewportHeight)
webGLCanvas.style.setCssText("border-bottom: solid 1px #DDDDDD")
webGLCanvas.setId("webglcanvas")
Browser::getDocument().getElementById("webGLCanvasDiv").appendChild(webGLCanvas)
val Element webGLLeapDiv = Browser::getDocument().createDivElement()
webGLLeapDiv.style.setCssText("position: absolute")
webGLLeapDiv.style.setCssText("z-index: 10")
webGLLeapDiv.setId("webGLLeapDiv")
Browser::getDocument().getElementById("webglDiv").appendChild(webGLLeapDiv)
val leapCanvas = Browser::getDocument().createCanvasElement()
// canvas size is handled via renderer in …Run Code Online (Sandbox Code Playgroud) three.js ×8
3d ×2
canvas ×2
renderer ×2
css ×1
javascript ×1
optimization ×1
overlap ×1
render ×1
rendering ×1
scene ×1
transparency ×1
webgl ×1
zbuffer ×1