WebGL入门画一个旋转的cube

Posted yanky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebGL入门画一个旋转的cube相关的知识,希望对你有一定的参考价值。

最近搜罗了各种资料,发现WebGL中文网特别好用,很适合新手入门:http://www.hewebgl.com/article/getarticle/50

只需要下载好需要的所有包,然后用notepad 就可以开始写代码了, 运行代码我选择的Google Chrome,其实IE也是一样的,纯属个人信仰。

然后对于画cube的话,给出的代码已经非常清晰了:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>canvas { width: 100%; height: 100% }</style>
    <script src="js/three.js"></script>
</head>
<body>
    <script>
        var scene = new THREE.Scene();
  
        var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
  
        var renderer = new THREE.WebGLRenderer();
  
        renderer.setSize(window.innerWidth, window.innerHeight);
  
        document.body.appendChild(renderer.domElement);
        var geometry = new THREE.CubeGeometry(2,2,2);
        var material = new THREE.MeshBasicMaterial({color: 0xF0F000});
        var cube = new THREE.Mesh(geometry, material); scene.add(cube);
        camera.position.z = 5;
        function render() {
            requestAnimationFrame(render);
            cube.rotation.x += 0.05;
            cube.rotation.y += 0.05;
            renderer.render(scene, camera);
        }
        render();
    </script>
</body>
</html>

有写过网站页面的话都知道html的处理就像一个堆栈,看到head就push到栈里,开始处理head的内容,碰到下一个head再pop出来,标志head处理结束。

总体来说,简单的网站页面包括<html><head><body>格式都是固定的,其中代码里面  document.body.appendChild(renderer.domElement);这句话声明此脚本是挂在body下执行的,如果不写这一句,body是不知道这个脚本是给它用的,因此就不会显示脚本里描述的cube的各种活动。

和写unity脚本类似,webgl的图形界面也是需要这三个基本元素构成的。

1.scene

2.camera

3.renderer

然后是声明一个物体对象cube,和new一个变量一样:var cube = new THREE.Mesh(geometry, material); scene.add(cube);其中值得注意的是js喜欢用var来声明变量,因为var和c的(void*)类似,都是可以接收任何类型的,比较灵活。

其中看起来比较奇葩的是color的赋值,用的是16进制,其实0x000000,就相当于0xRGB,每个颜色用两位来表示。

感觉webgl实现和最新的opengl类似,然后现在新兴的微信小程序其实也和H5有着密不可分的关系,所以webgl感觉是一个挺适合前端工程的一套工具。

 

以上是关于WebGL入门画一个旋转的cube的主要内容,如果未能解决你的问题,请参考以下文章

webGL入门学习之创建场景

Three.js入门

WebGL入门教程-webgl绘制三角形

前端WebGL技术应用入门

WebGL入门教程-webgl颜色

WebGL523- 实用 WebGL 图像处理入门