分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

Three.js 学习之路(一)

发布时间:2023-09-06 01:20责任编辑:傅花花关键词:js

1.一个友好的编辑器可以提高工作效率,webstrom,vscode是开发three.js的不错选择。

2.快速学习Three.js,可以从官网https://threejs.org/ 下载源码,查阅常用API,关注threejs分享案例。中文手册http://techbrood.com/threejs/docs/

3.快速构建一个通用的Three.js框架:

  首先引入下载的three.js源文件到我们的项目中,接着创建必须的三个对象

(1).scence :存放所有3d场景中的对象,可通过scence.children快速拿到所有场景对象的信息(基于对象命名的索引,So命名规范极其重要);

(2).camera:摄像机包括透视摄像机(正交摄像机,立方体摄像机);

    屏幕中心为世界三维坐标系原点,屏幕向外为Z,屏幕右方为X,屏幕上方为Y
(3).renderer:渲染器包括webgl和canvas,canvas是2d渲染的回退。通过渲染器把摄像机视口渲染到我们的网页中;

  现在我们需要添加一个简单的3d模型,光源和一个render()实时渲染函数,一个3D ?Web Demo就可以完美运行了。

示例:

<!DOCTYPE html>
<html>
<head>
<title>My first three.js 框架</title>
<script src="./lib/three.js"></script>
<style type="text/css">
body {
margin: 0px;
border: none;
cursor: pointer;
width: 100%;
height: 100vh;/* //800px */
overflow: hidden;
}
</style>
<script>
var renderer,scene,camera,cube;
function Init(){
scene= new THREE.Scene();

???????????renderer = new THREE.WebGLRenderer();
???????????renderer.setSize(window.innerWidth, window.innerHeight);//可自定义画布大小
???????????renderer.setClearColor(0x000000, 1.0);//设置画布背景色
???????????document.body.appendChild(renderer.domElement);//画布
 
???????????camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);//透视相机
???????????camera.position.set(0,4,10);
???????????camera.up = { x: 0, y: 1, z: 0 };//自身up向量的朝向
???????????camera.lookAt({ x: 0, y: 0, z: 0 });//聚焦
 
???????????var ?pointlight = new THREE.PointLight(0xffffff);
???????????pointlight.position.set(0, 0, 0);
???????????scene.add(pointlight);

???????????var cubegeometry = new THREE.BoxGeometry(1, 1, 1);//保存顶点数据
???????????var cubematerial = new THREE.MeshBasicMaterial({color:0x00ff00});//材质对象
???????????cube = new THREE.Mesh(cubegeometry, cubematerial);//网格对象
???????????cube.rotation.x = 1.57;
???????????scene.add(cube);
???????????}
???????????function update() {
???????????cube.rotation.y += 0.05;//弧度 自身旋转 但自身轴向不变
???????????renderer.render(scene, camera);//每一帧的渲染
???????????requestAnimationFrame(update);//下一帧执行一次参数中的函数
???????????}
???????????function start(){
???????????????Init();
???????????????update();
???????????}
 
???</script>
</head>
<body onload="start()">
</body>
</html>

Three.js 学习之路(一)

原文地址:http://www.cnblogs.com/JiSight/p/7729236.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved