У меня проблема с получением crossctsobjects raycaster, поскольку он показывает null - PullRequest
0 голосов
/ 05 мая 2020

Я визуализирую файл stl. Я не получаю точных координат (xyz). Когда я беру координаты xyz в файле Intersects = raycaster.intersectobjects (objects), он получает пустой массив. Я использую https://www.viewstl.com/plugin/

<div id="stl_cont" style="height:500px;width:100%"></div>
<script>
    var objMod = [{ id: 2, filename: "TestGlass.stl", display: "smooth" }];
    $(document).ready(function () {
        stl_viewer = new StlViewer(document.getElementById("stl_cont"), {
            auto_rotate: true,
            mouse_zoom: true,
            allow_drag_and_drop: true,
            models: objMod
        });
        console.log(stl_viewer);

        window.onload = function () {
            init();
        };

        function init() {
            debugger;
            renderer = new THREE.WebGLRenderer({ antialias: false });
            canvas = document.getElementById('myCanvas');//renderer.domElement;
            canvasPosition = $(canvas).position();
            camera = new THREE.PerspectiveCamera(20, $(canvas).width() / $(canvas).height(), 0.01, 1e10);
            scene = new THREE.Scene();
            rayCaster = new THREE.Raycaster();
            mousePosition = new THREE.Vector2();
            scene.add(camera);
            var myObjects = new THREE.Mesh();
            myObjects.add(stl_viewer);
            myObjects.name = 'stl_cont';
            scene.add(myObjects);
            objects.push(myObjects);
        };
        var renderer, canvas, canvasPosition, camera, scene, rayCaster, mousePosition, mesh, objects;

        window.addEventListener('mousedown', getClicked3DPoint, false);
        function getClicked3DPoint(evt) {
            evt.preventDefault();
            mousePosition.x = ((evt.clientX - canvasPosition.left) / canvas.width) * 2 - 1;
            mousePosition.y = -((evt.clientY - canvasPosition.top) / canvas.height) * 2 + 1;
            rayCaster.setFromCamera(mousePosition, camera);
            var intersects = rayCaster.intersectObject(objects, true);
            if (intersects.length > 0)
                return intersects[0].point;
        };
    });
</script>
...