所以我試圖用alpha混合覆蓋xtk中的2個網格,設置不同的顏色和不透明度。XTK在覆蓋網格中閃爍
的例子可以在這裏 http://biostat.jhsph.edu/~jmuschel/XTK_Flicker_Example/
看出,當2項目都在同一渲染渲染,但不重疊,這不會發生。
我似乎無法理解爲什麼會發生這種閃爍。
所以我試圖用alpha混合覆蓋xtk中的2個網格,設置不同的顏色和不透明度。XTK在覆蓋網格中閃爍
的例子可以在這裏 http://biostat.jhsph.edu/~jmuschel/XTK_Flicker_Example/
看出,當2項目都在同一渲染渲染,但不重疊,這不會發生。
我似乎無法理解爲什麼會發生這種閃爍。
這就是排序算法與你搞砸。渲染透明對象像three.js或xtk這樣的圖形引擎就像從後到前對場景中的對象進行排序,這樣透明度就可以正確地累積(在'Learning WebGL'中可以更多地瞭解它)。
由於您的場景在另一個大的透明對象內部有一個大的透明對象,它們具有相同的原點,使得排序機制變得混亂並開始在前後翻轉對象。當首先渲染內部對象時,外部會將其透明度與內部對象融合,但當首先渲染外部對象時,內部對象將因其表面位於外部(深度測試)之後而被忽略。
要解決這個問題,您可以嘗試強制內部對象先呈現。
您可以通過執行
r0 = new X.renderer3D();
r0.init();
r0.config.ORDERING_ENABLED = false
這樣在添加對象到現場將決定它們所呈現的順序,停用該渲染器重新排序(which is also the solution to this problem in three.js)。它解決了閃爍問題。