Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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

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 三个js投影问题_Javascript_Three.js_Transform_Projection - Fatal编程技术网

Javascript 三个js投影问题

Javascript 三个js投影问题,javascript,three.js,transform,projection,Javascript,Three.js,Transform,Projection,我有一个很奇怪的问题。 我创建了一个有三个js的场景,我想在场景的地板上投影一个圆柱体顶点,并构建它的路径。所以,当我添加一个圆柱体时,移动并旋转它,然后将它投影到地板上,顶点,我克隆的位于旧位置的圆柱体,在变换之前。 我的错在哪里 function drawCircle(r,seg,color,pos,mesh){ var geometry = new THREE.CylinderGeometry(r,r,100,seg); var material = new THREE.MeshBas

我有一个很奇怪的问题。 我创建了一个有三个js的场景,我想在场景的地板上投影一个圆柱体顶点,并构建它的路径。所以,当我添加一个圆柱体时,移动并旋转它,然后将它投影到地板上,顶点,我克隆的位于旧位置的圆柱体,在变换之前。 我的错在哪里

function drawCircle(r,seg,color,pos,mesh){

var geometry = new THREE.CylinderGeometry(r,r,100,seg);

var material = new THREE.MeshBasicMaterial( { color: color, wireframe: true, transparent: true } );
mesh2 = new THREE.Mesh( geometry, material );
mesh2.position = pos;
mesh2.rotation.x = Math.PI/2;
scene.add(mesh2);

var lineGeometry = new THREE.Geometry();

for (var i=0; i < (mesh2.geometry.vertices.length/2)-1; i++)
{
    var origin = mesh2.geometry.vertices[i].clone();
    var proj   = projectOntoMesh( origin, mesh );
    lineGeometry.vertices.push( proj );
}

lineGeometry.computeLineDistances();
var lineMaterial = new THREE.LineBasicMaterial( { color: color } );
var line = new THREE.Line( lineGeometry, lineMaterial );
scene.add(line);
scene.remove(mesh2);
//scene.remove(sphere);
}


function projectOntoMesh(point, mesh)

{


var origin = point.clone();
var direction = point.clone();
//direction.multiplyScalar(-1);
direction.y = -direction.y*25;
//direction.x = -direction.x;

//var direction = point.clone().multiplyScalar(-1);
var ray = new THREE.Raycaster( origin, direction.normalize() );
var intersection = ray.intersectObject( mesh );
if ( intersection.length > 0 )
    return intersection[ 0 ].point;
else
// console.log( "No intersection?" );
    return null;
}
功能绘图圈(r、seg、颜色、位置、网格){
变量几何=新的三个圆柱几何(r,r,100,seg);
var material=new THREE.MeshBasicMaterial({color:color,线框:true,transparent:true});
mesh2=新的三个网格(几何体、材质);
mesh2.position=pos;
mesh2.rotation.x=Math.PI/2;
场景。添加(网格2);
var lineGeometry=new THREE.Geometry();
对于(var i=0;i<(mesh2.geometry.vertices.length/2)-1;i++)
{
var origin=mesh2.geometry.vertices[i].clone();
var proj=projectOntoMesh(原点,网格);
线几何.顶点.推送(项目);
}
lineGeometry.computeLineDistances();
var lineMaterial=new THREE.LineBasicMaterial({color:color});
var line=新的三线(线几何体、线材质);
场景。添加(行);
场景。移除(网格2);
//场景。移除(球体);
}
函数projectOntoMesh(点、网格)
{
var origin=point.clone();
var direction=point.clone();
//方向。多重标度(-1);
方向y=-方向y*25;
//方向x=-方向x;
//var direction=point.clone().multilyscalar(-1);
var-ray=new THREE.Raycaster(origin,direction.normalize());
var intersection=光线。intersection对象(网格);
如果(交点长度>0)
返回交点[0]。点;
其他的
//控制台日志(“无交叉点?”);
返回null;
}

对不起,我的英语…

你能提供完整的自我包含代码吗?你渲染场景了吗?请出示全部代码。谢谢