0

立方体の周りを周回し、常に直視するカメラを備えた単純な Three.js シーンがあります。カメラが立方体の周りを周回するときに、カメラから現在最も見える側面の割合を把握する必要があります。

したがって、私がまっすぐに見ている場合、サイド 1 (「正面」) は 100% で、他の 5 つのサイドはすべて 0% です。カメラを少し右に回転させると、サイド 2 (「右側」) の一部 (「右側」) が見えるようになります。おそらく 20% ですが、サイド 1 は 80% で見ることができます。次に少し上に回転すると、おそらくサイド 3 (上部) が 10% 表示されます。

これを理解するにはどうすればよいですか?キューブ自体は回転せず、カメラのみが回転することに注意してください。Three.js や JavaScript が最適ですが、ほとんどすべてのプログラミング言語を扱うことができます。私は主に、これを達成する方法についてのアイデアに興味があります。

4

2 に答える 2

1

まず、スクリーン スペース内の頂点の位置を計算します。

方法:

var screenspaceVertexPosition = vertex.position.applyProjection(
    this.projectionMatrix.multiplyMatrices(object.matrixWorld))

これを 8 つの頂点すべてに対して行います。次に、平面の法線を確認して、どの平面が表示されているかを調べます。次に、スクリーンスペースで各面が使用する領域を計算します。そこから、完全な可視領域とパーセンテージを計算できます。

于 2013-08-12T09:37:15.193 に答える