Three.js 第一篇:绘制一个静态的3D球体
第一篇就画一个球体吧
首先我们知道Three.js其实是一个3D的JS引擎,其中的强大之处就在于这个JS框架并不是依托于JQUERY来写的。那么,我们在写这一篇绘制3D球体的文章的时候,应该注意哪些地方呢?下面我就来一一列举
1.场景。
场景是什么,说得简单一点,场景就是一个canvas ,我们就是要在Canvas上面实现3D效果的画面而已。场景和容器,相机是息息相关的,我们就拿拍戏来说,假如我们需要演一个古装剧的撕逼场景,那么,我们需要的道具其中之一就是一个相机。
2.容器
就是承载球体的DIV,比如我们要演戏,那么演戏的场地,比如某个山清水秀的地方。
3.相机
简单一点说,就是你从屏幕里面看这个球体的样子,说得不太明白?其实很简单,你想一下你在玩生化危机的时候的,是不是第一人称?那么你看到的不同的怪物,以不同的视角去看的话,那么得到的结果,就会有差异,这个就是相机的作用。
4.演员(这里指的是球体)
这个就太容易了,不过以后我提到的可不一定是球体哦,也许是正方体,也许是一个复杂的形状都有可能,THREE.JS提供了很多的“库”,这些库可以绘制出不同的形状的物体,对于初学者来说,理解这些就足够了。
代码
代码不是特别的复杂,大家理解的话可以按照层级关系来理解,比如场景里面添加相机什么的,反正就是一层一层的套,英语的话有一些专有词汇,
<div id="container"></div> <script>
//设置场景的大小
var width = 400;
var height = 300; //设置相机的一些参数。
var view_angle = 45;
aspect = width / height;
near = 0.1;
far = 10000; //设置容器
var $container = $("#container"); //新建一个WebGL 渲染,以及相机
var renderer = new THREE.WebGLRenderer();
var camera =
new THREE.PerspectiveCamera(
view_angle, aspect, near, far
);
var scene = new THREE.Scene(); //把相机添加到场景里面
scene.add(camera); camera.position.z = 300; renderer.setSize(width, height); //附加DOM元素
$container.append(renderer.domElement); //设置球体的值
var radius = 50, segemnt = 16, rings = 16; var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0xCC0000 }); var sphere = new THREE.Mesh(
new THREE.SphereGeometry(radius,segemnt,rings),
sphereMaterial
); sphere.geometry.verticesNeedUpdate = true;
sphere.geometry.normalsNeedUpdate = true; scene.add(sphere); var pointLight = new THREE.PointLight(0XFFFFFF); pointLight.position.x = 10;
pointLight.position.y = 50;
pointLight.position.z = 150; scene.add(pointLight); //画图
renderer.render(scene, camera); </script>
最终效果
由于我也是初学者,所以给大家的帮助也很有限,不过我会努力的,经常把自己学习Three.js的一些心得分享出来,共勉之!
Three.js 第一篇:绘制一个静态的3D球体的更多相关文章
- IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...
- Vue.js基础篇实战--一个ToDoList小应用
距离开始学Vue已经过去一个多月了,总想把学到的东西柔和在一起,做点东西出来,于是有了这个Todolist小应用. 使用vuex 纯粹基础,没有用到web pack,vuex,npm,下次把它改造一下 ...
- three.js 第一篇:准备工作
demo展示:https://www.hanjiafushi.com/three/index.html 1:复习向量知识 2:学习矩阵知识 3:推荐先看webGL入门指南,对一些基础性的概念有所了解 ...
- 【pygame游戏编程】第一篇-----创建一个窗口
下面我们一起来创建一个背景为蓝色的窗口作为游戏编程的开始: import sys import pygame def creat_screen(): #初始化pygame pygame.init() ...
- None.js 第一步 开启一个服务 hello world
引入 http 模块 var http = require('http'); 创建服务器 http.createServer(function (request, response) { // 发送一 ...
- js 第一篇(常用交互方法)
1. cocument.write("content") //向html 直接写入内容 2. alert("content") // 警告对话框 3. conf ...
- WebGL编程指南案例解析之绘制一个点
<!DOCTYPE html> <html> <head> <title>webgl</title> <style type=&quo ...
- 第一篇:Django基础
Django框架第一篇基础 一个小问题: 什么是根目录:就是没有路径,只有域名..url(r'^$') 补充一张关于wsgiref模块的图片 一.MTV模型 Django的MTV分别代表: Model ...
- Three.js入门篇(一)创建一个场景
上一面讲述了向场景中添加物体对象.这一篇准备把每个功能点细细的讲述一遍,一方面是为了加深自己的理解.另一方面希望能够 帮助到有需要的人. 一.在学习WEBGL的时候,你应该先了解要创建一个WebGL程 ...
随机推荐
- 应用工具 .NET Portability Analyzer 分析迁移dotnet core
大多数开发人员更喜欢一次性编写好业务逻辑代码,以后再重用这些代码.与构建不同的应用以面向多个平台相比,这种方法更加容易.如果您创建与 .NET Core 兼容的.NET 标准库,那么现在比以往任何时候 ...
- 让 windows 下的命令行程序 cmd.exe 用起来更顺手
在 Windows 下使用 Larave 框架做开发,从 Composer 到 artisan 总是避免不了和 cmd.exe 打交道,系统默认的命令行界面却是不怎么好看,且每行显示的字符数是做了限制 ...
- CSS浮动、定位
这几天有空,整理了关于CSS浮动和定位的一些知识点,有什么欠缺的地方,欢迎大家批评指正. 一.文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流,指的是元素排版布局过程中,元素会自动从左往右 ...
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...
- Yeoman 官网教学案例:使用 Yeoman 构建 WebApp
STEP 1:设置开发环境 与yeoman的所有交互都是通过命令行.Mac系统使用terminal.app,Linux系统使用shell,windows系统可以使用cmder/PowerShell/c ...
- PHP的学习--RSA加密解密
PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...
- SharePoint 2013: A feature with ID has already been installed in this farm
使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...
- docker – 你应该知道的10件事
容器并不是一个全新的技术,但这并不妨碍Docker如风暴一样席卷整个世界. 如果你在IT圈里,你一定听说过Docker.就算与其他热门技术,如:Puppet/Chef,Hadoop或者MongoD ...
- 关于Hadoop用户体系的设想(胡思乱想)
关于Hadoop的用户体系设计设想 Hadoop并没有一个完整的用户体系,其权限控制的对象,主要是Linux的其它用户(即非安装Hadoop的用户),控制方式也和Linux的文件权限很像,目前权限控制 ...
- 机器学习之sklearn——EM
GMM计算更新∑k时,转置符号T应该放在倒数第二项(这样计算出来结果才是一个协方差矩阵) from sklearn.mixture import GMM GMM中score_samples函数第 ...