0

射影行列と射影オブジェクトを手動で変更したいのですが、そうすると何も射影されません。私のコードは以下に書かれています:

    container = document.createElement( 'div' );
    document.body.appendChild( container );
    scene = new THREE.Scene();
    scene.matrixAutoUpdate = false;

    camera = new THREE.PerspectiveCamera( 45, width/height, 1, 10000 );                   
    camera.position.z = 1000;

    sm = [0.00276099, 0.00450188, 0.0029867, 0, -0.0003996, 0.00351491, -0.00492164, 0, -0.0053816, 0.00203048, 0.00189776, 0 ,0, 0, 0, 1];
    for (var i=0;i<16;i++){
      camera.projectionMatrix.elements[i] = sm[i];
    }

    scene.add( camera );

    siz = 20;
    geometry = new THREE.CubeGeometry( siz, siz, siz );
    material = new THREE.MeshBasicMaterial( {  map: THREE.ImageUtils.loadTexture( "{{ STATIC_URL }}images/middle.jpg" ) });

    mesh = new THREE.Mesh( geometry, material);
    mesh.matrixAutoUpdate = false;
    scene.add( mesh );
    objects.push( mesh);

    mesh.updateMatrix();
    scene.updateMatrixWorld();

    projector = new THREE.Projector();

    renderer = new THREE.WebGLRenderer( { antialias: true } );
    renderer.sortObjects = false;
    renderer.setSize( width, height );

    renderer.shadowMapEnabled = true;
    renderer.shadowMapSoft = true;

    container.appendChild( renderer.domElement );

私は何を間違っていますか?

前もって感謝します

4

1 に答える 1

2

カメラが遠すぎる、それだけです。

camera.position.z = 100;

また、宣言する

var objects = [];

あなたのコードは、カメラの射影行列を正しく変更します。

于 2013-01-07T14:36:43.550 に答える