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中找到对象的交集?_Javascript_Three.js - Fatal编程技术网

Javascript 如何在three.js中找到对象的交集?

Javascript 如何在three.js中找到对象的交集?,javascript,three.js,Javascript,Three.js,我加载20个具有随机位置的对象。我需要使物体具有随机位置,但不相交。 如何确定物体的交点并检查交点 for (var i = 0; i < 20; i++) { // Create a material var textureLoader = new THREE.TextureLoader(); var map = textureLoader.load('./models/test_2.png'); var material

我加载20个具有随机位置的对象。我需要使物体具有随机位置,但不相交。 如何确定物体的交点并检查交点

 for (var i = 0; i < 20; i++) {
        // Create a material
        var textureLoader = new THREE.TextureLoader();
        var map = textureLoader.load('./models/test_2.png');
        var material = new THREE.MeshPhongMaterial({ map: map });

        var shipMtl = new MTLLoader();
        var loader = new this.THREE.OBJLoader();

        shipMtl.load('./models/test.mtl', function(materials) {
            materials.preload();

            loader.setMaterials(materials);
            loader.load('./models/test.obj', function(object) {
                object.traverse(function(node) {
                    if (node.isMesh) node.material = material;
                });

                object.position.x = Math.random() * 500 - 250;
                object.position.y = Math.random() * 500 - 250;
                object.position.z = Math.random() * 500 - 250;
                object.scale.x = Math.random() * 2 + 40;
                object.scale.y = Math.random() * 2 + 40;
                object.scale.z = Math.random() * 2 + 40;
                object.rotation.x = Math.random() * 2 * Math.PI;
                object.rotation.y = Math.random() * 2 * Math.PI;
                object.rotation.z = Math.random() * 2 * Math.PI;
                var obj = object; // put your object as global
                scene.add(obj);
            });
        });
    }

    raycaster = new THREE.Raycaster();

    mouse = new THREE.Vector2();
    renderer = new THREE.WebGLRenderer({ antialias: true });
    renderer.setPixelRatio(window.devicePixelRatio);
    renderer.setSize(window.innerWidth, window.innerHeight);
    this.refs.figure.appendChild(renderer.domElement);

阅读THREE.js文档:
99%的时间threejs.org/docs会有您的答案

如果您需要20个相同的对象,只需加载一次,然后使用.clone在不同位置多次附加。对于交叉点,如果边界框重叠,您可以尝试一个新的随机位置。或者计算一个边界球体并执行相同的操作。