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
Matrix THREE.JS:如何在顶点着色器中围绕其中心旋转对象?_Matrix_Three.js_Rotation_Glsl - Fatal编程技术网

Matrix THREE.JS:如何在顶点着色器中围绕其中心旋转对象?

Matrix THREE.JS:如何在顶点着色器中围绕其中心旋转对象?,matrix,three.js,rotation,glsl,Matrix,Three.js,Rotation,Glsl,我有一个简单的三点物体。必须通过着色器(绿线)以及一般对象位置绕其Y中心轴旋转。我现在已经评论过了,所以它不会影响旋转问题 现在它有错误的“轨道”旋转。我很确定我需要玩TPO。我试过了,但没有成功 var统计、场景、渲染器; var摄像机、摄像机控制、网格; 如果(!init())设置动画(); 函数init(){ renderer=new THREE.WebGLRenderer({ 反别名:是的, preserveDrawingBuffer:true }); 渲染器.setClearCo

我有一个简单的三点物体。必须通过着色器(绿线)以及一般对象位置绕其Y中心轴旋转。我现在已经评论过了,所以它不会影响旋转问题

现在它有错误的“轨道”旋转。我很确定我需要玩TPO。我试过了,但没有成功


var统计、场景、渲染器;
var摄像机、摄像机控制、网格;
如果(!init())设置动画();
函数init(){
renderer=new THREE.WebGLRenderer({
反别名:是的,
preserveDrawingBuffer:true
});
渲染器.setClearColor(0xBBBBBB,1);
renderer.setSize(window.innerWidth、window.innerHeight);
document.getElementById('container').appendChild(renderer.doElement);
场景=新的三个。场景();
摄像头=新的三个透视摄像头(35,window.innerWidth/window.innerHeight,11000);
摄像机位置设置(0,0,5);
场景。添加(摄影机);
var geometry=new THREE.BufferGeometry();
var顶点=新数组([
-1.0, -1.0,  1.0,
1.0, -1.0,  1.0,
1.0,  1.0,  1.0,
1.0,  1.0,  1.0,
-1.0,  1.0,  1.0,
-1.0, -1.0,  1.0
] );
geometry.addAttribute('position',新的三个.BufferAttribute(顶点,3));
var material=新的三个着色器材质({
三面,双面,
制服:{
parentPosition:{value:new THREE.Vector3(0.0,0.0,0.0)},
旋转:{类型:“f”,值:0.0},
纹理:{value:new THREE.TextureLoader().load(“assets/blob.png”)}
},
vertexShader:document.getElementById(“vertexShader”).textContent,
fragmentShader:document.getElementById(“fragmentShader”).textContent,
字母测试:0.9
} );
网格=新的三个网格(几何体、材质);
场景。添加(网格);
}
函数animate(){
//网格.材质.制服.父位置.值.x+=0.01;
mesh.material.uniforms.rotation.value+=0.01;
请求动画帧(动画);
render();
}
函数render(){
渲染器。渲染(场景、摄影机);
}
body{margin:0px;}

three.js模板
统一的vec3位置;
均匀浮动旋转;
可变vec4颜色;
变化的mat4位置;
void main(){
mat4 tPos=mat4(vec4(1.0,0.0,0.0,0.0),
vec4(0.0,1.0,0.0,0.0),
vec4(0.0,0.0,1.0,0.0),
vec4(0,0,0,1.0));
mat4 rYPos=mat4(向量4(cos(旋转),0.0,sin(旋转),0.0),
vec4(0.0,1.0,0.0,0.0),
vec4(-sin(旋转),0.0,cos(旋转),0.0),
vec4(0.0,0.0,0.0,1.0));
vPosition=tPos*rYPos;
vColor=vec4(1.0,0.0,1.0,1.0);
vec3新位置=位置+父位置;
vec4 mvPosition=modelViewMatrix*vPosition*vec4(newPosition,1.0);
gl_PointSize=32.0*(300.0/-mvPosition.z);
gl_位置=投影矩阵*mvPosition;
}
二维纹理均匀;
可变vec4颜色;
变化的mat4位置;
void main(){
gl_FragColor=vColor;
gl_FragColor=gl_FragColor*texture2D(纹理,gl_PointCoord);
}

这是我的错。代码运行良好。必须将所有Z值设置为0.0

var vertices = new Float32Array( [

-1.0, -1.0,  0.0,
1.0, -1.0,  0.0,
1.0,  1.0,  0.0,

1.0,  1.0,  0.0,
-1.0,  1.0,  0.0,
-1.0, -1.0,  0.0

] );

这是我的错。代码运行良好。必须将所有Z值设置为0.0

var vertices = new Float32Array( [

-1.0, -1.0,  0.0,
1.0, -1.0,  0.0,
1.0,  1.0,  0.0,

1.0,  1.0,  0.0,
-1.0,  1.0,  0.0,
-1.0, -1.0,  0.0

] );

请看from AlteredQualia的源代码。请看from AlteredQualia的源代码。