私は現在、GWT プラグイン gwt-g3d を使用して倉庫の 3D ビジュアライゼーションを作成することに関する学士論文に取り組んでいます。
構造レイアウトをかなり効率的に表示できるところまで来ました。すべてのレンダリングをシェーダー内に保持し、gl.draw()
呼び出しを最小限に抑えるため、適切なフレームレートで 200 万以上の頂点をレンダリングします。ただし、この手法は非常に静的であるため、この手法を使用して行き止まりになったと思います。私が必要としているのは、アプリケーションをより動的にする方法です。私は Java でのオブジェクト指向プログラミングに慣れているため、シェーダー言語を理解するのは非常に困難です。これが私が話していることです...
ビジュアライゼーションの複数の領域 (これらの領域の数は初期化時に不明です) を別の方法 (別の色で開始) でレンダリングしようとしています。したがって、フラグメントシェーダー内で次のようなことを試しました。
...
uniform vec3 alteredCoords[]; //a coordArray of positions that i want to render alternatively
...
// color each of these coords in grey
for (int i = 0; i < alteredCoords.length(); i++) {
if ( position.x == alteredCoords[i].x && position.y == alteredCoords[i].y && position.z == alteredCoords[i].z) {
gl_FragColor = vec4(100.0/255.0, 100.0/255.0, 100.0/255.0, 1.0);
return;
}
}
配列には一定のサイズが必要であり、キャストの問題があるため、これがそのまま機能しないことはわかっています。シェーダー言語は動的にサイズ変更された配列をサポートしていないため、これはとにかく機能しないため、今のところ無視してみてください。
私が必要としているのは、この問題に対するある種の回避策です。何か案は?
現時点で私のレイアウトがどのように見えるかのスクリーンショットは次のとおりです。
単一の領域 (灰色の四角形) のアイデアを既に実装していることに注意してください。必要なのは、複数の領域をそのように動的にレンダリングする方法だけです。