Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript three.js中BufferGeometry的迁移问题_Javascript_Three.js - Fatal编程技术网

Javascript three.js中BufferGeometry的迁移问题

Javascript three.js中BufferGeometry的迁移问题,javascript,three.js,Javascript,Three.js,我对three.js还很陌生,正在尝试改编一些在互联网上找到的脚本来解决我的问题。我已经有了一个工作的3D视图和我的一个组件,但我需要一些新的功能,这些功能可以在较新的版本中找到。我从r66开始,想升级到r71,但不知怎的,我得到了一些数组错误。我认为我的缓冲区几何体有点不正确(请参阅函数:create_component)。以下是一些片段: //main file init(); animate(); function init() { if ( !Detector.webgl )

我对three.js还很陌生,正在尝试改编一些在互联网上找到的脚本来解决我的问题。我已经有了一个工作的3D视图和我的一个组件,但我需要一些新的功能,这些功能可以在较新的版本中找到。我从r66开始,想升级到r71,但不知怎的,我得到了一些数组错误。我认为我的缓冲区几何体有点不正确(请参阅函数:create_component)。以下是一些片段:

//main file
init();
animate();

function init() 
{
    if ( !Detector.webgl ) Detector.addGetWebGLMessage();

    renderer = new THREE.WebGLRenderer({antialias: true});
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);
    renderer.setClearColor(0xFFFFFF, 1);

    camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 2843.14990,  12217.65039);
    camera.position.x = 0.00000;
    camera.position.y = 0.00000;
    camera.position.z = 5897.56250;
    camera.up = new THREE.Vector3(0, 1, 0);
    var target = new THREE.Vector3(0.00000, 0.00000, 0.00000);
    camera.lookAt(target);

    controls = new THREE.TrackballControls(camera);
    controls.addEventListener('change', render);

    scene = new THREE.Scene();


    var light_ambient = new THREE.AmbientLight(0x000000);
    scene.add(light_ambient);

    light = new THREE.PointLight(0x999999);
    light.position.set(2843.14941, -3790.86621, 5686.29980);
    scene.add(light);
    light = new THREE.PointLight(0x4C4C4C);
    light.position.set(-3790.86621, -3790.86621, 2843.14990);
    scene.add(light);
    light = new THREE.PointLight(0x4C4C4C);
    light.position.set(0.00000, 3790.86646, 3790.86621);
    scene.add(light);

    create_component(scene);

    window.addEventListener('resize', onWindowResize, false);
}

function onWindowResize() 
{
    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();

    renderer.setSize(window.innerWidth, window.innerHeight);

    controls.handleResize();
    render();
}

function animate()
{
    requestAnimationFrame(animate);
    renderer.render(scene, camera);
    controls.update();
}

function render()
{
    renderer.render(scene, camera);
}


//second file  
function create_component(scene)
{
    var mesh;
    var material;
    var geometry;
    //var parent;

    //parent = new THREE.Object3D();
    //parent.name = 'test';
    //scene.add(parent);

    geometry = new THREE.BufferGeometry();
    geometry.attributes = {
        position: {
            itemSize: 3,
            array: new Float32Array([
            439.22070, 1088.16528, 57.26282,
            14.22070, 1088.16528, 57.26282,
            439.22070, -351.82593, 57.26282,
            439.22070, -351.82593, 57.26282,
            14.22070, 1088.16528, 57.26282,
            14.22070, -351.82593, 57.26282,
            589.22070, -1126.83447, 57.26282,
            1014.22070, -1126.83447, 57.26282,
            589.22070, 1033.15649, 57.26282,
            589.22070, 1033.15649, 57.26282,
            1014.22070, -1126.83447, 57.26282,
            1014.22070, 1033.15649, 57.26282,
            515.72070, -1016.83447, 57.26282,
            515.72070, -391.83472, 57.26282,
            -1103.27100, -1016.83496, 57.26282,
            -1103.27100, -1016.83496, 57.26282,
            515.72070, -391.83472, 57.26282,
            -1103.27100, -391.83472, 57.26282,
            -1103.27979, -1166.83496, 57.26282,
            -1103.27979, -1791.83496, 57.26282,
            1056.71191, -1166.83447, 57.26282,
            1056.71191, -1166.83447, 57.26282,
            -1103.27979, -1791.83496, 57.26282,
            1056.71191, -1791.83447, 57.26282,
            466.76074, -1166.83447, 57.26282,
            466.76074, -1791.83447, 57.26282,
            1465.75195, -1166.83447, 57.26282,
            1465.75195, -1166.83447, 57.26282,
            466.76074, -1791.83447, 57.26282,
            1465.75195, -1791.83447, 57.26282
            ])
        },
        normal: {
            itemSize: 3,
            array: new Float32Array([
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000,
            0.00000, 0.00000, 1.00000
            ])
            }
        };

        material = new THREE.MeshPhongMaterial({
            color: 0x505050,
            shininess: 2.00000,
            ambient: 0x505050,
            side: THREE.DoubleSide,
            specular: 0x000000
        });

    mesh = new THREE.Mesh(geometry, material);
    //parent.add(mesh);
    scene.add(mesh);
}
当我排除带有float32array的文件时,一切都很好。我希望有人能给我一个技巧如何解决这个问题,因为我不是很有经验的编程与webGL


谢谢

以下是创建
缓冲几何体时可以遵循的模式:

var positions = new Float32Array( [
        439.22070, 1088.16528, 57.26282,
        . . .
        1465.75195, -1791.83447, 57.26282
        ] );

var normals = new Float32Array( [
        0.00000, 0.00000, 1.00000,
        . . .
        0.00000, 0.00000, 1.00000
        ] );

geometry = new THREE.BufferGeometry();

geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
geometry.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );
3.js r.71