Javascript 在画布或div中嵌套Three.JS渲染器
我正在尝试将3d模型查看器嵌套在具有其他信息(如文本)的响应布局中。我使用的是window.innerWidth和window.innerHeight,但后来我切换到了.clientWidth和.clientHeight,因此渲染器大小将由css控制,但它不会渲染 我正在使用这个网站寻求帮助Javascript 在画布或div中嵌套Three.JS渲染器,javascript,html,css,three.js,Javascript,Html,Css,Three.js,我正在尝试将3d模型查看器嵌套在具有其他信息(如文本)的响应布局中。我使用的是window.innerWidth和window.innerHeight,但后来我切换到了.clientWidth和.clientHeight,因此渲染器大小将由css控制,但它不会渲染 我正在使用这个网站寻求帮助 threejs-基本 身体{ 保证金:0; 溢出:隐藏; } 帆布{ 显示:内联块; 背景:红色; 宽度:40%; 身高:40%; } 嗨 变量渲染器, 场景 摄像机, myCanvas=documen
threejs-基本
身体{
保证金:0;
溢出:隐藏;
}
帆布{
显示:内联块;
背景:红色;
宽度:40%;
身高:40%;
}
嗨
变量渲染器,
场景
摄像机,
myCanvas=document.getElementById('myCanvas');
//渲染器
renderer=new THREE.WebGLRenderer({canvas:myCanvas,antialas:true});
renderer.setClearColor(0x000000);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(canvas.clientWidth,window.clientHeight);
//摄像机
摄像头=新的三个透视摄像头(50,canvas.clientWidth/window.clientHeight.013000);
//场面
场景=新的三个。场景();
//灯光
var灯光=新的三个环境灯光(0xffffff,0.5);
场景。添加(灯光);
var light2=新的三点光源(0xffffff,0.5);
场景。添加(light2);
var geometry=新的3.BoxGeometry(100100);
//几何材料
var material=new THREE.MeshLambertMaterial({color:0xF3FFE2});
var mesh=新的三个网格(几何体、材质);
网格位置z=-1000;
场景。添加(网格);
//RenderLoop
render();
var-delta=0;
函数render(){
//轮虫
网格旋转.x+=.0001
网格.旋转.y+=.001
网格旋转.z+=.001
//活动顶点
δ+=0.1;
顶点[0].x=-25+Math.sin(delta)*50;
geometry.verticesNeedUpdate=true;
渲染器。渲染(场景、摄影机);
请求动画帧(渲染);
};
我看到两个问题:
clientWith
用于使用getElementById
或其他函数选择以映射html节点的节点,但window对象没有此方法,如果您的引用是window对象,则可以使用innerWidth和innerHeight,在本例中,我看到您的画布大小是视口的40%
,然后您可以使用window.innerHeight*0.40
threejs-基本
身体{
保证金:0;
溢出:隐藏;
}
帆布{
显示:内联块;
背景:红色;
宽度:40%;
身高:40%;
}
嗨
var myCanvas=document.getElementById('myCanvas');
//渲染器
var renderer=new THREE.WebGLRenderer({canvas:myCanvas,antialas:true});
renderer.setClearColor(0x000000);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth*0.40,window.innerHeight*0.40);
//摄像机
var摄像机=新的三透视摄像机(50,(窗内宽度*0.40)/(窗内高度*0.40),.013000);
//场面
var scene=new THREE.scene();
//灯光
var灯光=新的三个环境灯光(0xffffff,0.5);
场景。添加(灯光);
var light2=新的三点光源(0xffffff,0.5);
场景。添加(light2);
var geometry=新的3.BoxGeometry(100100);
//几何材料
var material=new THREE.MeshLambertMaterial({color:0xF3FFE2});
var mesh=新的三个网格(几何体、材质);
网格位置z=-1000;
场景。添加(网格);
//RenderLoop
render();
var-delta=0;
函数render(){
//轮虫
网格旋转.x+=.0001
网格.旋转.y+=.001
网格旋转.z+=.001
//活动顶点
δ+=0.1;
顶点[0].x=-25+Math.sin(delta)*50;
geometry.verticesNeedUpdate=true;
渲染器。渲染(场景、摄影机);
请求动画帧(渲染);
};
你想要画布。clientWidth@BenWest还是不行吗?