2017-07-14 8 views
0

ForgeシーンにSkyboxを追加したいが、Forgeがthree.jsと違う。私はそれで何ができるのかを知りたい。Autodesk Forgeでskyboxを設定する方法

私はnew THREE.CubeTextureLoaderを試しましたが、Forgeのthree.jsにはこの機能がありません。それから私はCubeGeometryを造ろうとしましたが、うまくいきませんでした。

これは私のコードです:

var materialArr=[]; 
var directions = ["aa_RT","aa_LF","aa_UP","aa_DN","aa_FR","aa_BK"] ; 
for (var i = 0; i < 6; i++){ 
    materialArray.push(new THREE.MeshBasicMaterial({ 
     map: THREE.ImageUtils.loadTexture("lib/img/aa/"+ directions[i] + ".jpg"), 
     side: THREE.BackSide 
    })); 
} 
var skyBoxGeom = new THREE.CubeGeometry(80,80,80); 
var skyBoxMaterial = new THREE.MeshFaceMaterial(materialArr); 
var skyBox = new THREE.Mesh(skyBoxGeom,skyBoxMaterial); 
viewer.impl.scene.add(skyBox); 

これが私のシーンです。ここ

scene

+1

これまでに試した内容を追加してください。この最初の[how-to-ask](https://stackoverflow.com/help/how-to-ask) –

+0

を参照してください。前のコメントに加えて、Forgeビューアはカスタマイズされた3つのバージョン.jsですが、three.jsでできることのほとんどはビューアで実行できます。スカイボックスは、基本的にシーンに追加されたテクスチャ付きカスタムメッシュのセットです。カスタムメッシュとマテリアルのサンプルを見てください:https://github.com/Autodesk-Forge/library-javascript-viewer-extensions/tree/master/src/Autodesk.ADN.Viewing.Extension.MeshImporter次にhttps: //github.com/Autodesk-Forge/library-javascript-viewer-extensions/tree/master/src/Autodesk.ADN.Viewing.Extension.Material –

+0

ここでは、three.js用のクールスカイボックスデモです:https:// stemkoski .github.io/Three.js/Skybox.html –

答えて

1

は(ES6で)見る人のために働くスカイボックスを作成するためのいくつかのコードです:

export default class ViewerSkybox { 

    constructor (viewer, options) { 

    const faceMaterials = options.imageList.map((url) => { 
     return new THREE.MeshBasicMaterial({ 
     map: THREE.ImageUtils.loadTexture(url), 
     side: THREE.BackSide 
     }) 
    }) 

    const skyMaterial = new THREE.MeshFaceMaterial(
     faceMaterials) 

    const geometry = new THREE.CubeGeometry(
     options.size.x, 
     options.size.y, 
     options.size.z, 
     1, 1, 1, 
     null, true) 

    const skybox = new THREE.Mesh(
     geometry, skyMaterial) 

    viewer.impl.scene.add(skybox) 
    } 
} 

これは私の側でうまくいきます。ライブデモで見ることができます私はhereを作成しました。あなたが気を取る必要がある

enter image description here

ことの一つは、視聴者がロードされたモデルのバウンディングボックスに基づいて作成されている近/ファークリッピングプレーンを使用していることです。 skyboxはおそらくモデルよりもはるかに大きいので、回避策の1つは、エクステントのサイズが大きいモデルを読み込むことです。そのため、シーンクリッピングプレーンは自動的に更新されます。 2番目のモデルには、[(-500、-500、-500)、(500、500、500)]など、望ましい範囲に配置された小さな立方体のみが含まれます。

スカイボックスを使用している私の内線のソースは、Viewing.Extension.Showcaseです。

関連する問題