创建场景直接上代码 :
<!DOCTYPE html>
<html lang="en">
<head>
<title>CreateScene.html</title>
</head>
<body>
<div id = "container3d"></div>
<script src="js/three.js"></script>
<script src="js/OrbitControls.js"></script>
<script src="js/Detector.js"></script>
<script src="js/stats.min.js"></script>
<script>
var controls;
var container,stats;
var camera, scene;
var renderer;
var mesh, zmesh, geometry;
var mouseX = 0, mouseY = 0;
var isShowFPS = true;
initScene();
animate();
//初始化场景
function initScene(){
//场景
scene = new THREE.Scene();
//摄像机
camera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight , 1,20000);
camera.position.set(0, 180,200);
//控制器
controls = new THREE.OrbitControls( camera );
controls.addEventListener( 'change', render );
//灯光
var ambientLight = new THREE.AmbientLight(0xffffff);
scene.add(ambientLight);
// directional lighting
var directionalLight = new THREE.DirectionalLight(0xffffff); //美术场景渲染后,可以不用打这么多灯光了
directionalLight.position.set(0, 0, 10);
scene.add(directionalLight);
//three.js自带的几何体(以平面为例)
plane = new THREE.Mesh(new THREE.PlaneGeometry(500 ,500, 8 , 8 ) , new THREE.MeshBasicMaterial({color : 0x000000 , opacity : 0.25 , transparent : false , wireframe : true}));
plane.visible = true;
plane.position.set(-2 , 1,0);
plane.rotation.set(-Math.PI/2,0,0 );
scene.add(plane);
// 容器
container = document.getElementById("container3d");
//渲染器
renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setSize(window.innerWidth,window.innerHeight);
//renderer.setScissor( 200, 200, window.innerWidth, window.innerHeight );
//renderer.setViewport( 300, 0, window.innerWidth, window.innerHeight );
container.appendChild(renderer.domElement);
// 显示帧率
if(isShowFPS){
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.bottom = '0px';
stats.domElement.style.zIndex = 100;
container.appendChild( stats.domElement );
}
// SKYBOX/FOG 天空盒子
//scene.fog = new THREE.FogExp2( 0x9999ff, 0.00025 ); //是否有雾效果
var materialArray = [];
materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( "textures/skybox/px.jpg" ) }));
materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( "textures/skybox/nx.jpg" ) }));
materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( "textures/skybox/py.jpg" ) }));
materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( "textures/skybox/ny.jpg" ) }));
materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( "textures/skybox/pz.jpg" ) }));
materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( "textures/skybox/nz.jpg" ) }));
for (var i = 0; i < 6; i++){
materialArray[i].side = THREE.BackSide;
}
var skyboxMaterial = new THREE.MeshFaceMaterial( materialArray );
var skyboxGeom = new THREE.CubeGeometry( 2000, 2000,2000, 1, 3, 1 );
var skybox = new THREE.Mesh( skyboxGeom, skyboxMaterial );
scene.add( skybox );
//红小球精灵
var ballTexture = THREE.ImageUtils.loadTexture("textures/ball.png");
var ballMaterial = new THREE.SpriteMaterial({map : ballTexture , useScreenCoordinates : true , alignment : THREE.SpriteAlignment.center});
ballSprite = new THREE.Sprite(ballMaterial);
ballSprite.scale.set(32,32,1.0);
ballSprite.position.set(500,500,0);
scene.add(ballSprite);
//绑定事件
window.addEventListener( 'resize', onWindowResize, false );
};
function onWindowResize() {
windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
function animate() {
requestAnimationFrame( animate );
render();
controls.update();
stats.update();
}
function render() {
renderer.render( scene, camera );
}
</script>
</body>
</html>
运行结果 :