WebGL利用Three.js库写凹凸纹理

   又是很久没更新,我不敢说是因为其它事,但是自己变懒了这个不可否认,做技术的如果做不出成果,一直潜心研究的人恐怕很少吧,好了废话不多说。

   Three.js库作为webgl封装好的一个库,极大便利了webgl的开发,否则我们画一个立方体都要由12个三角形组成,当然我们也必须得懂webgl底层的东西,这些是我们进一步学习的基础,最近几天刚接触three库,被它所能实现的功能震撼到了,个人感觉它带入了面向对象的色彩,比如摄像机、几何体、材质、场景、灯光等等都被几个代码封装好了。今天我们要说的便是凹凸纹理,凹凸纹理的作用是增加了纹理的高度,使得画面更加真实。这里推荐一个中文网站webgl中文网,里面有很多的教程。国外也有一个网站shadertoy也有丰富的学习资料。

    凹凸纹理实现效果:

    

     下面粘贴上代码:

          

var scene=new THREE.Scene();
var camera=new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000);
var WebGLRenderer=new THREE.WebGLRenderer();
WebGLRenderer.setClearColor(new THREE.Color(0x000000,1.0));
WebGLRenderer.setSize(window.innerWidth,window.innerHeight);
WebGLRenderer.shadowMapEnabled=true;
          代码其实很好理解,就是创建一个场景、相机、和一个渲染器,然后打开阴影开关。

 var sphere1 = createMesh(new THREE.BoxGeometry(15, 15, 15), "q.jpg");
    sphere1.rotation.y = -0.5;
    sphere1.position.x = 5;
    scene.add(sphere1);

  var floorTex = THREE.ImageUtils.loadTexture("f.png");
    var plane = new THREE.Mesh(new THREE.BoxGeometry(200, 100, 0.1, 30), new THREE.MeshPhongMaterial({
        map: floorTex
    }));
  plane.position.y = -7.5;
    plane.rotation.x = -0.5 * Math.PI;
    scene.add(plane);

    camera.position.x = 0;
    camera.position.y = 15;
    camera.position.z = 30;
  camera.lookAt(new THREE.Vector3(0, 0, 0));
    var ambiLight = new THREE.AmbientLight(0x242424);
    scene.add(ambiLight);
    var light = new THREE.SpotLight();
    light.position.set(0, 30, 30);
  light.intensity = 1.5;
    scene.add(light);

    document.body.appendChild(WebGLRenderer.domElement);

    var step = 0;

    render();
function createMesh(geom,imageFile)
{
	var texture=THREE.ImageUtils.loadTexture("./"+imageFile);
	geom.computeVertexNormals();
	var mat=new THREE.MeshPhongMaterial();
	mat.map=texture;
	var mesh=new THREE.Mesh(geom,mat);
	return mesh;
}
function render()
{
	requestAnimationFrame(render);
	WebGLRenderer.render(scene,camera);
	
}
这里就是创建一个box几何体,然后用图片作为纹理贴图,以及位置、大小设置,我这里就不一一细细说明,中文网上教程都有。

链接:http://pan.baidu.com/s/1o8NSEIA 密码:doqj这是纹理资源,包括后面几篇资源。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值