[英]Partially visible occluded sprites
有趣的问题。
它可以使用单个精灵完成,但您可能必须使用着色器材料(如果 pixelCoordinate 低于地平面,则禁用 depthTest 并检查顶点/片段着色器,然后将其渲染为透明)。
如果您对此不熟悉,另一种方法是将精灵加倍。 诀窍是将其中之一的depthTest 设置为false。 这样就可以渲染精灵,即使它在地下。 (当它在地面上方时,它仍然渲染在另一个精灵的顶部,但它几乎是透明的,所以不是很明显)。
我在这里做了一个小例子; https://jsfiddle.net/EthanHermsey/kw7dn8bh/25/
//create 2 sprites
let sprite = new THREE.Sprite(
new THREE.SpriteMaterial({
color: 'red'
})
)
sprite.scale.setScalar( 0.5 );
let sprite2 = new THREE.Sprite(
new THREE.SpriteMaterial({
color: 'red',
opacity: 0.2,
transparent: true,
depthTest: false
})
)
sprite2.scale.setScalar( 0.5 );
//create a container for both sprites, add sprites to it.
spriteContainer = new THREE.Object3D();
spriteContainer.add(sprite)
spriteContainer.add(sprite2)
scene.add(spriteContainer);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.