webgl photo box
来源:互联网 发布:如何有刘诗诗气质知乎 编辑:程序博客网 时间:2024/05/02 04:45
以下是源码:
<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <title>welcome to webgl chapter2.1</title><script src="http://cdnjs.cloudflare.com/ajax/libs/three.js/r68/three.min.js"></script> <script type="text/javascript"> var renderer = null, scene=null, camera=null, cube=null, cubea=null, animating=false; function onload(){ //抓取作为Canvas容器的<div>标签 var container = document.getElementById("container"); //创建Three.js渲染器,并添加到<div>标签中 renderer = new THREE.WebGLRenderer( {antialias: true} ); renderer.setSize(container.offsetWidth,container.offsetHeight) container.appendChild(renderer.domElement); //创建Three.js场景 scene = new THREE.Scene(); //创建相机,并添加到场景中。 camera=new THREE.PerspectiveCamera( 45, container.offsetWidth/container.offsetHeight, 1, 4000 ); camera.position.set(0,0,3); //创建一个平行光光源照射到物体上。 var light = new THREE.DirectionalLight( 0xffffff,1.5 ); light.position.set(0,0,1); scene.add(light); //创建一个接受光照并带有纹理映射的立方体,并添加到场景中 //首先,创建一个带纹理映射的立方体。 var mapUrl="http://sandbox.runjs.cn/uploads/rs/471/kdnkkh9t/rocy.hou.jpg"; var map = THREE.ImageUtils.loadTexture(mapUrl); //创建一个接受光照并带有纹理映射的立方体,并添加到场景中 //首先,创建一个带纹理映射的立方体。 var mapUrla="http://sandbox.runjs.cn/uploads/rs/471/kdnkkh9t/joe1.jpg"; var mapa = THREE.ImageUtils.loadTexture(mapUrla); //然后创建一个Phong材质来处理着色,并传递给纹理映射。 var material = new THREE.MeshPhongMaterial( {map:map} ); //然后创建一个Phong材质来处理着色,并传递给纹理映射。 var materiala = new THREE.MeshPhongMaterial( {map:mapa} ); //创建一个立方体的几何体 var geometry = new THREE.CubeGeometry( 1, 1, 1 ); //创建一个立方体的几何体 var geometrya = new THREE.CubeGeometry( 1, 1, 1 ); //将几何体和材质放到一个网格中 cube = new THREE.Mesh(geometry, material); cube.position.set(-1.5,0,0); //将几何体和材质放到一个网格中 cubea = new THREE.Mesh(geometrya, materiala); cubea.position.set(1.5,0,0); //设置网格在场景中的朝向,否则我们将不会看到立方体的形状。 cube.rotation.x=Math.PI /5; cube.rotation.y=Math.PI/5; //设置网格在场景中的朝向,否则我们将不会看到立方体的形状。 cubea.rotation.x=Math.PI /5; cubea.rotation.y=Math.PI /5; //将立方体网格添加到场景中 scene.add(cube); //将立方体网格添加到场景中 scene.add(cubea); //添加处理鼠标事件的函数,用于控制动画的开关。 addMouseHandler(); //运行渲染循环 run(); }/* function onload(){// Grab our container div var container = document.getElementById("container"); // Create the Three.js renderer, add it to our div renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize(container.offsetWidth, container.offsetHeight); container.appendChild( renderer.domElement ); // Create a new Three.js scene scene = new THREE.Scene(); // Put in a camera camera = new THREE.PerspectiveCamera( 45, container.offsetWidth / container.offsetHeight, 1, 4000 ); camera.position.set( 0, 0, 3 ); // Create a directional light to show off the objectvar light = new THREE.DirectionalLight( 0xffffff, 1.5);light.position.set(0, 0, 1);scene.add( light ); // Create a shaded, texture-mapped cube and add it to the scene // First, create the texture map var mapUrl = "./images/rocy1.jpg"; var map = THREE.ImageUtils.loadTexture(mapUrl); // Now, create a Phong material to show shading; pass in the map var material = new THREE.MeshPhongMaterial({ map: map }); // Create the cube geometry var geometry = new THREE.CubeGeometry(1, 1, 1); // And put the geometry and material together into a mesh cube = new THREE.Mesh(geometry, material); // Turn it toward the scene, or we won't see the cube shape! cube.rotation.x = Math.PI / 5; cube.rotation.y = Math.PI / 5; // Add the cube to our scene scene.add(cube); // Add a mouse up handler to toggle the animation addMouseHandler(); // Run our render loop run();}*/ function run(){ //渲染场景 renderer.render(scene,camera); //在下一帧中旋转立方体 if(animating){ cube.rotation.y-=0.01; cubea.rotation.y+=0.01; } //在另一帧中回调 requestAnimationFrame(run); } function addMouseHandler(){ var dom = renderer.domElement; dom.addEventListener('mouseup',onMouseUp,false); } function onMouseUp(event){ event.preventDefault(); animating= !animating; } </script> </head> <body onload="onload()" style=""> <center><h1>Rocy and Joe!</h1></center> <div id="container" style="width:95%; height:80%;position:absolute;"></div> <div id="prompt" style="width:95%; height:6%;bottom:0;position:absolute;"> Click to animate the cube </div> </body></html>
requestAnimationFrame源码:
/** * Provides requestAnimationFrame in a cross browser way. * http://paulirish.com/2011/requestanimationframe-for-smart-animating/ */if ( !window.requestAnimationFrame ) {window.requestAnimationFrame = ( function() {return window.webkitRequestAnimationFrame ||window.mozRequestAnimationFrame ||window.oRequestAnimationFrame ||window.msRequestAnimationFrame ||function( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element ) {window.setTimeout( callback, 1000 / 60 );};} )();}
css源码:
* { font-family: Arial; font-style: italic;}body {background-color:#eeeeee;color:#212121;}#container {z-index:-1;background-color:#eeeeee;}
0 0
- webgl photo box
- photo
- photo
- photo
- Photo
- photo
- photo
- photo
- photo
- WebGL
- WebGL
- WebGL
- webGL
- WebGL
- box
- Box
- box
- Box
- CGFloat,CGPoint,CGSize,CGRect系列数据类型及方法
- Android控件TextView的实现原理分析
- 这是我的第一篇博客
- 一个购物车添加商品程序(java+ajax+servlet)
- android理解tabhost
- webgl photo box
- HDU题目分类
- RFID智能档案管理系统 设计方案
- 南京邮电大学OJ——1064快速排序
- 只喝果汁能减肥吗 效果怎么样
- Windows下Console和Win32程序差异
- ZOJ3798:Abs Problem
- POI运用Excel模板打印报表
- FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask