Iphone 如何使three.js渲染与响应式设计兼容
如何在浏览器窗口缩放时使用以下three.js代码进行渲染,即文本随着浏览器窗口变小而变小 或者,你能建议一种替代方法吗?我尝试使用一个iframe(带有适当的样式代码,使iframe随着浏览器窗口的缩放而缩放),它引用了一个带有three.js呈现的网页。这种方法适用于桌面浏览器,但不适用于iPhoneIphone 如何使three.js渲染与响应式设计兼容,iphone,iframe,responsive-design,three.js,Iphone,Iframe,Responsive Design,Three.js,如何在浏览器窗口缩放时使用以下three.js代码进行渲染,即文本随着浏览器窗口变小而变小 或者,你能建议一种替代方法吗?我尝试使用一个iframe(带有适当的样式代码,使iframe随着浏览器窗口的缩放而缩放),它引用了一个带有three.js呈现的网页。这种方法适用于桌面浏览器,但不适用于iPhone <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-w
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<script type="text/javascript" src="three.min.js"></script>
<script type="text/javascript" src="helvetiker_bold.typeface.js"></script>
<script type="text/javascript">
var camera, renderer;
function init3d() {
var container = document.getElementById('3d');
camera = new THREE.PerspectiveCamera( 45, 747 / 531, 1, 2400 );
camera.position.set( 0, 300, 900 );
var scene = new THREE.Scene();
camera.lookAt( scene.position );
var ambient = new THREE.AmbientLight( 0x606060 );
scene.add( ambient );
var spotLight = new THREE.SpotLight( 0xffffcc );
spotLight.position.set( -1000, 2400, 2400 );
scene.add( spotLight );
var textGeo = new THREE.TextGeometry( "HELLO", {
size: 100,
height: 20,
curveSegments: 12,
font: "helvetiker",
weight: "bold",
style: "normal",
bevelThickness: 2,
bevelSize: 5,
bevelEnabled: true
});
textGeo.computeBoundingBox();
var centerOffset = -0.5 * ( textGeo.boundingBox.max.x - textGeo.boundingBox.min.x );
var textMaterial = new THREE.MeshPhongMaterial( { color: 0x80a0c0, specular: 0xffffff } );
var mesh = new THREE.Mesh( textGeo, textMaterial );
mesh.position.x = centerOffset;
mesh.position.y = -10;
var text = new THREE.Object3D();
text.add( mesh );
scene.add( text );
renderer = new THREE.WebGLRenderer( {antialias:true} );
renderer.setClearColor( 0x204060 );
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
window.addEventListener( 'resize', onWindowResize, false );
renderer.render( scene, camera );
}
function onWindowResize() {
camera.aspect = document.getElementById("3d").offsetWidth /document.getElementById("3d").offsetHeight;
camera.updateProjectionMatrix();
renderer.setSize( document.getElementById("3d").offsetWidth, document.getElementById("3d").offsetHeight );
}
window.addEventListener ? window.addEventListener("load",init3d,false) : window.attachEvent && window.attachEvent("onload",init3d);
</script>
</head>
<body style="background-color:#339966">
<div style="max-width:747px; max-height:531px; width:100%">
<div id="3d" style="width:100%"></div>
</div>
</body>
</html>
摄像机、渲染器;
函数init3d(){
var container=document.getElementById('3d');
摄像机=新的三个透视摄像机(45747/53112400);
摄像机位置设置(0,300,900);
var scene=new THREE.scene();
摄像机。注视(场景。位置);
var环境光=新的三个环境光(0x606060);
场景。添加(环境光);
var spotLight=新的三个聚光灯(0xffffcc);
聚光灯位置设置(-1000240024002400);
场景。添加(聚光灯);
var textGeo=new THREE.TextGeometry(“你好”{
尺码:100,
身高:20,
曲线段:12,
字体:“helvetiker”,
重量:“粗体”,
风格:“正常”,
体重:2,
贝弗西:5,
bevelEnabled:是的
});
textGeo.computeBoundingBox();
var centerOffset=-0.5*(textGeo.boundingBox.max.x-textGeo.boundingBox.min.x);
var TEXTMATERY=新的三点网格材质({颜色:0x80a0c0,镜面反射:0xffffff});
var mesh=新的三个网格(textGeo,textMaterial);
网格位置x=中心偏移;
网格位置y=-10;
var text=new THREE.Object3D();
添加(网格);
场景。添加(文本);
renderer=new THREE.WebGLRenderer({antialas:true});
renderer.setClearColor(0x204060);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth、window.innerHeight);
container.appendChild(renderer.doElement);
addEventListener('resize',onWindowResize,false);
渲染器。渲染(场景、摄影机);
}
函数onWindowResize(){
camera.aspect=document.getElementById(“3d”).offsetWidth/document.getElementById(“3d”).offsetHeight;
camera.updateProjectMatrix();
renderer.setSize(document.getElementById(“3d”).offsetWidth,document.getElementById(“3d”).offsetSight);
}
window.addEventListener?window.addEventListener(“加载”,init3d,false):window.attachEvent和window.attachEvent(“加载”,init3d);