最近有客戶試用我們的三維平臺,在匯入模型的時候,會出現模型全黑和不可見的情況。上一篇文章說了全黑的情況。此文說下不可見的情況。
經過測試,發現可能有如下兩種情況。
匯入的模型不在鏡頭視野內
匯入的模型不在鏡頭視野內,所以看不到模型。有可能模型就不在視野內,也有可能模型位置超過了鏡頭的far引數值。 這種情況下,調整鏡頭的引數(包括position,center,far等)。
模型的建模中心不在幾何中心
比較隱蔽的一種情況是模型的建模中心點不在模型本身的幾何中心,建模中心在模型自身之外,此時模型的位置雖然都在鏡頭的視野之內,但是模型的所有頂點都在鏡頭視野之外。 這種情況下,可以檢視下模型boudingbox的center值,如果center值不在偏離(0,0,0) 很多,就說明模型的建模中心和模型本身的幾何中心很遠。 這種情況下需要建模師調整模型,把建模中心調整到幾何中心(至少附近)。
模型尺寸太小
還要一種情況是模型的尺寸太小,而鏡頭位置比較遠,此時鏡頭雖然能夠看到模型,但是由於太小,所以人眼可能看不到。 這種情況下,可以檢視模型的boudingbox的size值,看看大小如何,如果太小,建議讓建模人員進行調整,把尺寸增加即可。
模型全透明
在匯入obj模型的時候,有的時候會出現模型全透明的情況,這種情況下是因為,mtl檔案中的tr引數設定為了1. tr等於1的時候,解析的時候會把不透明度設定為1-tr,程式碼如下:
case 'tr':
n = parseFloat( value );
if ( this.options && this.options.invertTrProperty ) n = 1 - n;
if ( n > 0 ) {
params.opacity = 1 - n;
params.transparent = true;
if(params.opacity === 0) {
console.warn( "opacity is 0");
}
}
break;
可以直接手動修改mtl檔案,把tr相關的引數設定給去掉,也可以讓建模人員匯出模型的時候不匯出tr引數。
結語
修改後的效果,如下圖:
如果對視覺化感興趣,可以和我交流,微信541002349。 關注公號“ITMan彪叔” 可以及時收到更多有價值的文章。