three.js - 旋转几何体的特定部分

时间:2012-10-19 07:10:50

标签: three.js

我创建了一个具有以下功能的管几何体。

function plotPath()
        {                                           
            var obj = getPath();
            var segments = 60;
            var closed = false;
            var debug = false;
            var radiusSegments = 12;
            var tube;
            var points = [];
            var x=0,y=0,z=0;            

            for(var i=0; i<obj.path.length; i++)
            {                               
                console.log(obj.path[i].point);
                points.push(obj.path[i].point);                                                                                 
            }

            extrudePath = new THREE.SplineCurve3(points);
            tube = new THREE.TubeGeometry(extrudePath, segments, 10, radiusSegments, closed, debug);                                

            tubeMesh = new THREE.Mesh(tube ,new THREE.MeshBasicMaterial({
                color: 0x000000, side: THREE.DoubleSide,
                opacity: 0.5, transparent: false, wireframe: true}));

            tubeMesh.add(new THREE.AxisHelper());
            var v = new THREE.Vector3(1,0,0).normalize();           
            tubeMesh.applyMatrix(matrix.makeRotationAxis(v, 0));
            tubeMesh.applyMatrix(matrix.makeTranslation(-500,0,0));

            if ( tube.debug ) tubeMesh.add( tube.debug );                                   
            scene.add(tubeMesh);
            objects.push(tubeMesh);                                         
        } 

此处extrudePath是使用作为参数传递给THREE.SplineCurve3(points)的点构建的。点以JSON格式存储在外部javascript文件中。 在这个管几何形状中,我可以旋转/旋转它的初始部分。当我缩小并尝试旋转/旋转管的中间或末端部分时,我不能。轮换很奇怪。

如何旋转/旋转管几何的特定部分?我需要在一些小部件中打破它以使旋转平滑吗?或者是否可以在每个点添加THREE.AxisHelper以使旋转/旋转看起来更容易?

Default view of Tube Zoom out view of Tube

0 个答案:

没有答案