threejs 入门基础-1、初探3js

下载对应的js 包括案例

git clone git@gitee.com:173970984/three.js.git

下载下来的目录结构如下图,核心文件是build 里面的three.module.js 



threejs 应用的整体结构图


整体结构是由场景(scene)、摄像机(camera)、渲染器(renderer)组成。

就跟我们看别人拍电影一样,scene就是拍摄的场地,场地上面有人、有房子树木、灯光、各种各样的物品。

mesh 就是一个网格对象, 好比房子的窗户就是其中一个网格对象。

如下图6个面的长方形,不同面的颜色不同,其中A面代表着其中一个material,6个面就是6个不同的material

也可以是相同的


接下来我们创建一个长方形

第一步、创建摄像头



<!DOCTYPE html>

<html lang="en">

    <meta charset="UTF-8">

    <title>创建长方形

<div id="container">

<script type="module">

  import *as THREEfrom "./build/three.module.js";

  import { OrbitControls }from './examples/jsm/controls/OrbitControls.js';

  let camera,scene,renderer ;

  let container=document.getElementById("container");//获取container

  scene=new THREE.Scene();//创建场景

  camera=new THREE.PerspectiveCamera(45,container.offsetWidth/container.offsetHeight,1,4000);

  camera.position.set(8,8,8);//创建相机并设置位置

  // 设置环境灯光

  let ambientLight=new THREE.AmbientLight();

  ambientLight.position.set(4,2,4);

  scene.add(ambientLight);

  // 几何体

  let geometry=new THREE.CubeGeometry(8,5,5);

  // 材质

  let material=new THREE.MeshPhongMaterial({color:0x0033ff,specular:0x555555,shininess:30});

  let material1=new THREE.MeshPhongMaterial({color:0x888888,specular:0x888888,shininess:30});

  let material2=new THREE.MeshPhongMaterial({color:0xFF44AA,specular:0xFF44AA,shininess:30});

  let material3=new THREE.MeshPhongMaterial({color:0xFF3333,specular:0xFF3333,shininess:30});

  let material4=new THREE.MeshPhongMaterial({color:0xFFAA33,specular:0xFFAA33,shininess:30});

  let material5=new THREE.MeshPhongMaterial({color:0xBBFF00,specular:0xBBFF00,shininess:30});

  let materialsx=[material,material1,material2,material3,material4,material5];

  // 网格

  let mesh=new THREE.Mesh(geometry,materialsx);

  scene.add(mesh);

  // 渲染器

  renderer=new THREE.WebGLRenderer({antialias:true});

  renderer.setPixelRatio(window.devicePixelRatio);

  renderer.setClearColor(0xEEEEEE);

  renderer.setSize(window.innerWidth,window.innerHeight);

  container.appendChild(renderer.domElement);

  let contorl=new OrbitControls(camera,renderer.domElement);//添加鼠标滚动缩放,旋转对象

  run()

function run() {

requestAnimationFrame(run);

      renderer.render(scene,camera);

  }

  body {

margin:0;

      background-color:#fff;

      color:#fff;

      font-family:Monospace;

      font-size:13px;

      line-height:24px;

      overscroll-behavior:none;

  }

a {

color:#ff0;

      text-decoration:none;

  }

a:hover {

text-decoration:underline;

  }

button {

cursor:pointer;

      text-transform:uppercase;

  }

#container{

width:100%;

      height:650px;

      background-color:#000000;

  }

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">  <title>创建长方形</title></head><body><div id="container"></div><script type="module"> import * as THREE from "./build/three.module.js"; import { OrbitControls } from './examples/jsm/controls/OrbitControls.js'; let camera,scene,renderer ; let container=document.getElementById("container");//获取container scene=new THREE.Scene();//创建场景 camera=new THREE.PerspectiveCamera(45,container.offsetWidth/container.offsetHeight,1,4000); camera.position.set(8,8,8);//创建相机并设置位置 // 设置环境灯光 let ambientLight=new THREE.AmbientLight(); ambientLight.position.set(4,2,4); scene.add(ambientLight); // 几何体 let geometry=new THREE.CubeGeometry(8,5,5); // 材质 let material=new THREE.MeshPhongMaterial({color:0x0033ff,specular:0x555555,shininess:30}); let material1=new THREE.MeshPhongMaterial({color:0x888888,specular:0x888888,shininess:30}); let material2=new THREE.MeshPhongMaterial({color:0xFF44AA,specular:0xFF44AA,shininess:30}); let material3=new THREE.MeshPhongMaterial({color:0xFF3333,specular:0xFF3333,shininess:30}); let material4=new THREE.MeshPhongMaterial({color:0xFFAA33,specular:0xFFAA33,shininess:30}); let material5=new THREE.MeshPhongMaterial({color:0xBBFF00,specular:0xBBFF00,shininess:30}); let materialsx=[material,material1,material2,material3,material4,material5]; // 网格 let mesh=new THREE.Mesh(geometry,materialsx); scene.add(mesh); // 渲染器 renderer=new THREE.WebGLRenderer({antialias:true}); renderer.setPixelRatio(window.devicePixelRatio); renderer.setClearColor(0xEEEEEE); renderer.setSize(window.innerWidth,window.innerHeight); container.appendChild(renderer.domElement); let contorl=new OrbitControls(camera,renderer.domElement);//添加鼠标滚动缩放,旋转对象 run() function run() { requestAnimationFrame(run); renderer.render(scene,camera); }</script><style> body { margin: 0; background-color: #fff; color: #fff; font-family: Monospace; font-size: 13px; line-height: 24px; overscroll-behavior: none; } a { color: #ff0; text-decoration: none; } a:hover { text-decoration: underline; } button { cursor: pointer; text-transform: uppercase; } #container{ width: 100%; height: 650px; background-color: #000000; }</style></body></html>


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容