2015-09-18 91 views
0

我有一个由THREE.PlaneBufferGeometry(水面)制成的网格,并且在那个表面上是另一个物体(一条船)。我的问题是,当船驶入水中时,你会发现船内突然出现水(因为y值较高)。如何在其他对象内部隐藏THREE.PlaneBufferGeometry的一部分?

我该如何解决这个问题?

我正在考虑计算船的内部尺寸,并试图将它们传递给水面的着色器。 (如果点在里面,隐藏它。)这是最好的方法吗?我该怎么做?

编辑:水应重叠(例如显示在前面)船的两侧。要clearify:

Current situation:   Desired situation: 

B  A 
    |   |     |   | 
-----|---------|--------  -----|   |-------- 
    |_________|     |_________| 

从[A]你不应该看到这艘船对象内,从[B]的水,你不应该看到船的下部。

回答

1

尝试禁用水面的深度书写。检查下面的示例。假设蓝色的平原是水,红色的是船。

//codepen.io/OlxandrPopov/pen/xwVBKg 
+0

由于某些原因,我无法发布链接到codepen.io,所以只需在http: –

+0

前加上链接即可。谢谢!唯一的问题是,当你从侧面看时,水应该显示在船体侧面的前方。:S – Philip