分享web开发知识

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

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

three.js探索笔记一

发布时间:2023-09-06 01:26责任编辑:彭小芳关键词:js
 

  

前言

“哈?要搞3D?”

“恩,之后一个项目要建造一栋楼,要靠你了少年!”

于是我默默的打开了 webgl新手入门手册 http://www.hewebgl.com/article/getarticle/27

后来,我成功的完成了这个这个3d楼层。http://wisdom.pppppc.com/home/index/threes.html

这个过程中,我经历了很多。接下来我将分享我过程中的心得。

第一步:新手教程

方法一:进入webgl官网   three.js新手教程。(我就是这样干的,花了3-4天通了遍基础)

方法二:找之前大神的基础教程。

方法三:加webgl相关QQ群,假扮萌妹,求帮助~~

以下是个画网格的例子,通过这个例子,我给大家分析画一个3d的需要(不是导入模型~)

 ???????var renderer,camera,scene,light; ???????var width,height; ???????//物体 ???????var cube; ???????//初始化渲染器函数 ???????function initThree(){ ???????????width = document.getElementById("canvas3d").clientWidth; ???????????height = document.getElementById("canvas3d").clientHeight; ???????????//初始化渲染器 ?(花括号里面为:锯齿优化) ???????????renderer = new THREE.WebGLRenderer({antialias:true}); ???????????????//大小 ???????????renderer.setSize(width,height); ???????????????????????document.getElementById("canvas3d").appendChild(renderer.domElement); ???????????//背景颜色 ???????????renderer.setClearColor(0xFFFFFF,1.0); ???????} ???????//初始化相机函数 ???????function initCamera(){ ???????????camera = new THREE.PerspectiveCamera(45,width/height,1,5000); ???????????camera.position.x=0; ???????????camera.position.y=1000; ???????????camera.position.z=0; ???????????camera.up.x = 0; ???????????camera.up.y = 0; ??????????????camera.up.z = 1; ???????????camera.lookAt({x:0,y:0,z:0}); ???????} ???????//初始化场景函数 ???????function initScene(){ ???????????scene = new THREE.Scene(); ???????} ???????//初始光函数 ???????function initLight(){ ???????????light = new THREE.DirectionalLight(0xff0000,1.0,0); ???????????light.position.set(200,200,200); ???????????scene.add(light); ???????} ???????//初始化物体函数 ???????????????function initObj(){ ???????????var geometry = new THREE.Geometry(); ???????????var material = new THREE.LineBasicMaterial({vertexColors:true}); ???????????var color1 = new THREE.Color("#444444"),color2= new THREE.Color("#ff0000"); ???????????????????var p1 = new THREE.Vector3(-500,0,0); ???????????var p2 = new THREE.Vector3(500,0,0); ???????????????????????geometry.vertices.push(p1); ???????????geometry.vertices.push(p2); ???????????geometry.colors.push(color1,color2); ???????????????????????for(var i=0;i<21;i++){ ???????????????var line = new THREE.Line(geometry,material,THREE.LinePieces); ???????????????line.position.z=(i*50)-500; ???????????????????????????????scene.add(line); ???????????????????????????????var line = new THREE.Line(geometry,material,THREE.LinePieces); ???????????????line.position.x=(i*50)-500; ???????????????????line.rotation.y=90*Math.PI/180; ???????????????????????scene.add(line); ???????????} ???????????????????????????????} ???????????????????????????//整体初始化 ???????function threeStart(){ ???????????initThree(); ?????????????????initScene(); ???????????initLight(); ???????????//对象 ???????????initObj();
       initCamera();
        renderer.clear();
      renderer.render(scene, camera);
}

对应着代码,我解释一下:

1,变量:renderer   渲染器

  首先我们的最终目标是要将我们代码画的物体渲染到网页上!

  渲染的实现就是 :

renderer.render(scene, camera);

2. 变量 : camera   相机  (废话,我们tm要你翻译?)

  这玩意叫相机,就相当于我们的眼睛。它是代替我们在3D世界里面看的东西。它有视野大小,视野最近/最远,位置坐标的定义。一般情况,我们移动它位置和方向来控制我们的视野。

3.变量:scene    场景 (这就是我们看到的一切)

  场景里面主要有2个东西,

  ①物体,用three画的\加载的模型等,一般情况,我会将所要的物体全部放到initObj()里面。

  ②光,没有光,那么物体确实存在在那儿,但是你看不到~~

  这些物体和光都需要在渲染前放到场景内。

  scene.add(light);  scene.add(line);  

总结:

  一个3d效果的流程:

  ①初始化渲染器 

  initThree();

  ②初始化场景

  initScene();

  ③初始化物体、光 add到场景中

  initLight();
  initObj();

  ④把我们的眼睛(相机)给放好位置(初始化)(相机初始位置最终渲染前就行)

  initCamera();

  ⑤最后把场景和相机放到渲染器中,咔咔咔咔咔咔~~噗    页面就出来了。

  renderer.render(scene, camera);

  哈哈哈哈哈哈哈,详细的那些相机~~光啊~~~什么的建议看webgl官网或者这个大神的博客:http://blog.csdn.net/birdflyto206/article/category/6132005

  下一次,我主要这个楼宇项目的起步。

three.js探索笔记一

原文地址:https://www.cnblogs.com/baiDog/p/8406173.html

知识推荐

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