WebGL之Threejs概述

什么是WebGL

WebGL是在浏览器中实现三维效果的一套规范。

WebGL能做什么

游戏、家居、虚拟现实、城市地图、CAD制图等等

什么是Three.js

three.js就是使用javascript 来写的,运行在浏览器上的3D程序。three.js是一个封装好的WebGL库,相当于简化了WebGL的操作。

three.js下载地址

第一个例子

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>canvas { width: 100%; height: 100% }</style>
</head>
<body>
    <script src="js/three.min.js"></script>
</body>
</html>

在浏览器运行,Console下输入 THREE.REVISION命令,得到版本号

第一个框架

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>canvas { width: 100%; height: 100% }</style>
    <script src="js/three.min.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(1,1,1);
        var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
        var cube = new THREE.Mesh(geometry, material); scene.add(cube);
        camera.position.z = 5;
        function render() {
            requestAnimationFrame(render);
            cube.rotation.x += 0.1;
            cube.rotation.y += 0.1;
            renderer.render(scene, camera);
        }
        render();
    </script>
</body>
</html>

四大组件 

场景(scene)、相机(camera)和渲染器(renderer)、几何体。

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);

1、场景

场景是所有物体的容器,如果要显示一个苹果,就需要将苹果对象加入场景中。

var scene = new THREE.Scene();

2、相机

相机决定了场景中那个角度的景色会显示出来。相机就像人的眼睛一样,人站在不同位置,抬头或者低头都能够看到不同的景色。

透视相机(THREE.PerspectiveCamera):离视点近的物体大,离视点远的物体小。

正投影相机:远近都一样大小。

3、渲染器

渲染器决定了渲染的结果应该画在页面的什么元素上面,并且以怎样的方式来绘制。

4、几何体

几何体就是要显示在场景中的对象。THREE.CubeGeometry

var geometry = new THREE.CubeGeometry(1,1,1);
var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);

WebGL中文网

初级学习视频网址

原文地址:https://www.cnblogs.com/liangtao999/p/12244918.html

时间: 2024-08-29 20:02:58

WebGL之Threejs概述的相关文章

【webGL】threejs入门 ---创建一个简单立方体

开发环境 Three.js是一个JavaScript库,所以,你可以使用平时开发JavaScript应用的环境开发Three.js应用.如果你没什么偏好的话,我会推荐Komodo IDE. 调试建议使用Chrome或者Firefox浏览器.如果你使用的是Firefox,那么Firebug会是你必不可少的插件:如果你使用的是Chrome,那么直接使用控制台调试即可.这些和JavaScript的调试是相同的,因此本书不作进一步展开. 下载 首先,我们需要在Github下载Three.js的代码. 在

m3u8编码视频webgl、threejs渲染视频纹理demo

<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>fz-live</title> <link href="./css/video.css" rel="stylesheet"> <script src="./js/video.js"></script> <script

WEBGl之THREEJS导入shp文件,生成三维模型

如果threejs可以导入shp文件,就可以呈现效果那是多么完美的事情啊!当然这是肯定的,那是我在经历的痛苦期,现在来分享我的甜品. ps.我的其中一篇是关于json格式的,知道我为啥这么了解吗,就是最先的思路是将shp文件转成json 的格式,然后用threejs 读取.然后就没有然后了. 有个偶然,一个QQ群的人,告诉我有个大神写了shp.js,可以读取线坐标,这才是我豁然开朗.(附上:https://www.bram.us/2012/07/30/shp-js-javascript-shap

【webGL】threejs常用的api

/*** 场景(scene) ***/ var scene = new THREE.Scene(); // 创建场景 scene.add(x); // 插入场景 /*** 相机(camera) ***/ // 正交投影相机 var camera = new THREE.OrthographicCamera(left, right, top, bottom, near, far); // 透视头像相机 var camera = new THREE.PerspectiveCamera(fov, as

【webGl】threejs实现一个简单的动画-弹跳的小球

在这里,我们将动态画面简称为动画(animation).正如动画片的原理一样,动画的本质是利用了人眼的视觉暂留特性,快速地变换画面,从而产生物体在运动的假象.而对于Three.js程序而言,动画的实现也是通过在每秒中多次重绘画面实现的. 为了衡量画面切换速度,引入了每秒帧数FPS(Frames Per Second)的概念,是指每秒画面重绘的次数.FPS越大,则动画效果越平滑,当FPS小于20时,一般就能明显感受到画面的卡滞现象. 那么FPS是不是越大越好呢?其实也未必.当FPS足够大(比如达到

WebGL可视化3D绘图框架:Three.js 零基础上手实战

课程下载地址:https://pan.baidu.com/s/1680So9jGlArFqB26PvII9g 提取码: br43 本课程主要的功效就是让你学习完本教程后,能够写出在浏览器上流畅运行的3D程序,包括但不限于:大数据可视化,360度全景展示,3D游戏,完成这些事情,会比c++用更少的代码.而且更容易,更酷. 在本课程中,我们将由浅入深的讲解这些效果的实现,这能让你迅速提高开发技能,在职场中处于不败之地.课程共十三章,大大小小贯穿了近10个案例,只要你具备基础的HTML和JavaScr

前端三个月有感

本科学了几年的编译型语言,大一的C.大二的C++,甚至还接触过汇编语言,但都是学校的课程设计范围之内.大三接触了java,这是我学习的第一门解释性语言,相比之下,java比C和C++都方便.但C太麻烦,java1又不熟,所以相对来说,我喜欢C++.本科四年的学习历程,都是跟着学校课程走,没主动想过要做啥,想做啥,以后的发展方向甚至都没有想过,浑浑噩噩的生硬的用着ubuntu.sql.别人做什么我就做什么,总觉得干完该干的事儿就够了.没有前端后端的概念.没想过了解AI.更没想过机器学习什么的,书本

龙之谷手游WebVR技术分享

主要面向Web前端工程师,需要一定Javascript及three.js基础:本文主要分享内容为基于three.js开发WebVR思路及碰到的问题:有兴趣的同学,欢迎跟帖讨论. 目录:一.项目体验1.1.项目简介1.2.功能介绍1.3.游戏体验二.技术方案2.1.为什么使用WebVR2.2.常用的WebVR解决方案2.2.1.Mozilla的A-Frame方案2.2.2.three.js及webvr-polyfill方案三.技术实现3.1.知识储备3.2.实现步骤3.3.工作原理四.技术难点4.

Threejs 官网 - 检测使用 three.js 时的 WebGL 和浏览器兼容性(Detecting WebGL and browser compatibility with three.js)

检测使用 three.js 时的 WebGL 和浏览器兼容性(Detecting WebGL and browser compatibility with three.js) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章