為了提高效能,threejs預設物體的形狀和材質一經建立,就永不改變。
所以,修改物體的形狀和材質,就需要手動告訴threejs,方法就是使用各種compute***方法和needsupdate屬性。
相機位置更新:
需要重新設定相機的位置,還需要重新渲染
camera.position.set(x, y, z);
//渲染
renderer.render(scene, camera);
注意事項:
很多時候因為有個動畫設定,所以以為只需要設定位置,投影就直接更新了,實際情況是必須執行重新渲染才能看到投影發生變更,
即當位置發生變更後因為動畫中的渲染導致以為直接設定位置變更投影就變更了
var animate = function
() ;
animate();
相機的視角、縱橫比等發生變更:
初始化設定
var camera = new three.perspectivecamera(fov, aspect,near, far);
變更設定
camera.fov = fov;//視野角重新設定
camera.aspect = aspect;//縱橫比重新設定
camera.near = near;//相機離視體積最近的距離重新設定
camera.far = far;//相機離視體積最遠的距離重新設定
//變更後必須使用以下方法更新相機的投影矩陣
camera.updateprojectionmatrix();
//渲染
renderer.render(scene, camera);
若是動畫中已經設定了不斷的重新渲染,此處可以不再設定渲染
位置更新:
首先判斷物體能夠產生陰影後,當光源位置發生變更後,不僅需要重新設定光源位置,還需要重新渲染
light.position
.set(lightx, lighty, lightz);
renderer.render(scene, camera);
顏色變更:var material = new three.meshphongmaterial();
$("#color").change(function
());
大小變更:注意事項
顏色設定問題
設定為選中的顏色,但是重新渲染後發現有些顏色與選擇的顏色不一致
原因:受到光源的影響,最終展示出來的顏色是光源與選擇顏色綜合出來的顏色
若是想要展示為選擇的顏色,需要將光源的顏色設定為白色0xffffff
不同幾何體的變更方法不完全相同,先列出部分已知的變更幾何體方法
幾何體:boxbuffergeometry
cube.scale
.set(width,width,width);
各種compute***方法
暫時未找到材質變更方法
scene.remove(sphere);
關於需求變更的二三事
參加過很多專案,也遇到過許多需求變更。記得n多年前系統半夜發布,結果發布當晚,那次release的乙個功能緊急變更,是乙個彎了十幾個彎的邏輯,所以當時寫的時候就很麻煩,leader說立刻改,於是吭哧吭哧開始改,改完發布,等著客戶確認,結果沒等來確認,等來了一次又一次的變更,很不爽,心裡暗暗鄙視客戶,...
Linux part2(系統的相關設定變更)
修改linux的系統語言 首先檢視當前系統的語言 1 echo lang 檢視當前作業系統的語言 中文 zh cn.utf 8 英文 en us.utf 8 2 臨時更改預設語言,當前立即生效 重啟失效 export lang en us.utf 8 3 永久生效,修改配置檔案 下面二選一 cent...
需求的變更
需求的變更 2005 07 01 在專案開發的過程中,經常會出現需求發生變更的情況。從變更的結果上看,主要有以下幾種需求變更的情況 1 需求增加 2 需求刪除 3 需求發生改變 我們在實施專案的時候,往往做著做著,突然發現專案的進度已經落下了這麼多。查詢其原因,我們往往會發現,專案的某些需求在悄然的...