Threejs载入obj和mtl以及添加旋转和阴影,自适应,鼠标控制
来源:互联网 发布:淘宝评价怎么截图 编辑:程序博客网 时间:2024/06/08 19:20
</pre><pre name="code" class="html"><!DOCTYPE html><html><head><meta charset="utf-8"> <title>Example 03.01 - Ambient Light</title> <script type="text/javascript" src="../libs/three.js"></script> <script type="text/javascript" src="../libs/OBJLoader.js"></script> <script type="text/javascript" src="../libs/MTLLoader.js"></script> <script type="text/javascript" src="../libs/OBJMTLLoader.js"></script> <script type="text/javascript" src="../libs/jquery-1.9.0.js"></script> <script type="text/javascript" src="../libs/stats.js"></script> <script type="text/javascript" src="../libs/dat.gui.js"></script> <script type="text/javascript" src="../libs/Detector.js"></script> <script type="text/javascript" src="../libs/OrbitControls.js"></script> <style>body {background:#000;color:#000;padding:0;margin:0;overflow:hidden;font-family:monospace;font-size:13px;text-align:center;}a { color:skyblue }#info {position: absolute;top: 0px; width: 100%;color: #fff;background:rgba(0,0,0,0.65);padding: 5px;text-align: center;z-index:100;display:block;}#stats { position: absolute; top:5px; left: 0; z-index: 100 }#stats #fps { background: transparent !important }#stats #fps #fpsText { color: #aaa !important }#stats #fps #fpsGraph { display: none } </style></head><body><div id="Stats-output"></div><!-- Div which will hold the Output --><div id="WebGL-output"></div><script type="text/javascript"> $(function () { var stats = initStats(); // create a scene, that will hold all our elements such as objects, cameras and lights. var scene = new THREE.Scene(); // create a camera, which defines where we're looking at. var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);// SKYBOX/*var sceneCube;var textureCube;sceneCube = new THREE.Scene();//sceneCube.add( camera );var r = "textures/cube/pisa/";var urls = [ r + "px.png", r + "nx.png", r + "py.png", r + "ny.png", r + "pz.png", r + "nz.png" ];textureCube = THREE.ImageUtils.loadTextureCube( urls );var shader = THREE.ShaderLib[ "cube" ];shader.uniforms[ "tCube" ].value = textureCube;var material = new THREE.ShaderMaterial( {fragmentShader: shader.fragmentShader,vertexShader: shader.vertexShader,uniforms: shader.uniforms,depthWrite: false,side: THREE.BackSide} ),mesh1 = new THREE.Mesh( new THREE.BoxGeometry( 100, 100, 100 ), material );sceneCube.add( mesh1 );*/ // create a render and set the size var renderer = new THREE.WebGLRenderer(); renderer.setClearColorHex(0xffffff, 1.0); renderer.setSize(window.innerWidth, window.innerHeight); renderer.shadowMapEnabled = true;//添加坐标轴var axes = new THREE.AxisHelper( 20 ); scene.add(axes); // 创建一个平面 var planeGeometry = new THREE.PlaneGeometry(100,100, 1, 1); var planeMaterial = new THREE.MeshLambertMaterial({color: 0xededed}); var plane = new THREE.Mesh(planeGeometry, planeMaterial); plane.receiveShadow = true; // rotate and position the plane plane.rotation.x = -0.5 * Math.PI; plane.position.x = 15 plane.position.y = -20 plane.position.z = 0 scene.add(plane);//添加模型var gui = new dat.GUI(); var mesh;var loader = new THREE.OBJMTLLoader();loader.addEventListener('load', function (event) { var object = event.content; for(k in object.children){ object.children[k].castShadow = true; object.children[k].receiveShadow = true; }object.position.x = 20;object.position.y = 0;object.position.z = 0; object.scale.set(0.5, 0.5, 0.5); mesh = object; scene.add(mesh); }); loader.load('../assets/models/00.obj', '../assets/models/00.mtl', {side: THREE.DoubleSide}); // 相机在场景中的位置和指向 camera.position.x = -25; camera.position.y = 40; camera.position.z = 25; camera.lookAt(new THREE.Vector3(10, 0, 0));//添加控制var orbitControls = new THREE.OrbitControls(camera); orbitControls.autoRotate = true;//设置平面自动旋转 var clock = new THREE.Clock(); // 增加外界环境光照 var ambiColor = "#8b8a87"; var ambientLight = new THREE.AmbientLight(ambiColor); scene.add(ambientLight); // 为了增加阴影添加一个点光源 var spotLight = new THREE.SpotLight(0xffffff); spotLight.position.set(-40, 60, -10); spotLight.castShadow = true; scene.add(spotLight); // add the output of the renderer to the html element $("#WebGL-output").append(renderer.domElement); // call the render function var step = 0; var controls = new function () { this.rotationSpeed = 0.01; this.bouncingSpeed = 0; this.ambientColor = ambiColor; } var gui = new dat.GUI(); gui.addColor(controls, 'ambientColor').onChange(function (e) { ambientLight.color = new THREE.Color(e); }); render();//监听窗口时间使其自适应window.addEventListener( 'resize', onWindowResize, false );window.addEventListener( 'mousemove', onDocumentMouseMove, false ); function render() { stats.update();//sphere.rotation.y=step+=0.01; var delta = clock.getDelta(); orbitControls.update(delta); if (mesh) { // mesh.rotation.y+=0.006; mesh.rotation.y+=0.006;//只是水平旋转//mesh.rotation.x += controls.rotationSpeed;//mesh.rotation.y += controls.rotationSpeed;//mesh.rotation.z += controls.rotationSpeed; } // render using requestAnimationFrame requestAnimationFrame(render); renderer.render(scene, camera); } function initStats() { var stats = new Stats(); stats.setMode(0); // 0: fps, 1: ms // Align top-left stats.domElement.style.position = 'absolute'; stats.domElement.style.left = '0px'; stats.domElement.style.top = '0px'; $("#Stats-output").append(stats.domElement); return stats; }//窗口监听事件function onWindowResize( event ) {SCREEN_WIDTH = window.innerWidth;SCREEN_HEIGHT = window.innerHeight;renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );camera.aspect = SCREEN_WIDTH / SCREEN_HEIGHT;camera.updateProjectionMatrix();cameraCube.aspect = SCREEN_WIDTH / SCREEN_HEIGHT;cameraCube.updateProjectionMatrix();}//鼠标监听事件function onDocumentMouseMove(event) {mouseX = ( event.clientX - windowHalfX );mouseY = ( event.clientY - windowHalfY );} });</script></body></html>
0 0
- Threejs载入obj和mtl以及添加旋转和阴影,自适应,鼠标控制
- Threejs载入OBJ和贴图
- .obj 和 .mtl文件格式
- threejs 鼠标移动控制模型旋转
- Unity3D 鼠标拖动和旋转物体以及鼠标拖动图片
- Threejs性能监视和可视化控制
- Unity鼠标控制物体360°旋转和点击移动
- threejs中坐标系转换和实现物体跟随鼠标移动
- ThreeJS阴影
- unity3d模型旋转和模型导出obj
- 关于“绕坐标轴的旋转”和“鼠标控制物体的旋转”(一)
- 关于“绕坐标轴的旋转”和“鼠标控制物体的旋转”(二)
- imageView添加阴影和边框
- position定位和添加阴影
- UIImageView添加边框和阴影
- UIImageView添加阴影和边框
- UIImageView添加边框和阴影
- UIImageView 添加边框和阴影
- baccarat judi online 500 Sam Thompson and
- 设置python的默认编码为utf8
- flowPlayer播放器嵌入到网页的代码片段
- "undefined reference to" 原因分析和解决方法汇总
- Unity3d鼠标点击屏幕来控制人物的走动
- Threejs载入obj和mtl以及添加旋转和阴影,自适应,鼠标控制
- MySQL数据类型和常用字段属性总结
- 模拟断网线
- POJ1182 数据结构 (并查集)
- 社説 20150116 宇宙基本計画 安全保障の能力強化を進めよ
- ZOJ 3757 Alice and Bob and Cue Sports [模拟]
- WebView基本使用
- 1042.Shuffling Machine
- WF MediaElement 视频播放器