亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

基于three.js編寫的一個項目類示例代碼

2024-05-06 16:41:47
字體:
來源:轉載
供稿:網友

WebVR

在開始之前,先對WebVR進行介紹,WebVR是一個實驗性的Javascript API,允許HMD(head-mounted displays)連接到web apps,同時能夠接受這些設備的位置和動作信息。這讓使用Javascript開發VR應用成為可能(當然已經有很多接口API讓Javascript作為開發語言了,不過這并不影響我們為WebVR感到興奮)。而讓我們能夠立馬進行預覽與體驗,移動設備上的chrome已經支持了WebVR并使手機作為一個簡易的HMD。手機可以把屏幕分成左右眼視覺并應用手機中的加速度計、陀螺儀等感應器,你需要做的或許就只是買一個cardboard。下面話不多說了,來一起看看本文的正文:

這是一篇關于怎么樣基于three.js進行可配置的three.js的對象創建的文章

項目地址

編寫一個three.js的基類

這是創建的一個Three.js基類其中包含了場景,相機,渲染器,控制器以及一些方法

 // VRcore.js import * as THREE from 'three'; const OrbitControls = require('three-orbit-controls')(THREE) let Scene, Camera, Renderer, Controls, loopID; function createScene({domContainer = document.body, fov = 50,far = 1000}){ if (!(domContainer instanceof HTMLElement)) {  throw new Error('domContainer is not a HTMLElement!'); } // 初始化 scene Scene = new THREE.Scene(); // 初始化 camera Camera = new THREE.PerspectiveCamera(fov, domContainer.clientWidth / domContainer.clientHeight, 1, far); Camera.position.set( 200, 200, 200 ); Camera.lookAt(Scene.position); Scene.add(Camera); // 初始化 renderer Renderer = new THREE.WebGLRenderer({ canvas: domContainer, antialias: true, alpha: true } ); Renderer.clear(); Renderer.setClearColor( 0xeeeeee, 1); // 更改渲染器顏色 Renderer.setSize(domContainer.clientWidth, domContainer.clientHeight); Renderer.shadowMap.Enabled = true; Renderer.setPixelRatio(domContainer.devicePixelRatio); initVR(); } function initVR() {  // 初始化控制器  Controls = new OrbitControls(Camera, Renderer.domElement);;  Controls.addEventListener('change', render);  Controls.enableZoom = true; } function render() { Renderer.render(Scene, Camera); } function renderStart(callback) { loopID = 0; // 記錄循環幾次,后面有與清除場景中的物體 if (loopID === -1) return; let animate = function(){  loopID = requestAnimationFrame(animate);  callback();  Controls.update();  render(); } animate(); } // 暫停動畫渲染 function renderStop() { if (loopID !== -1) {  window.cancelAnimationFrame(loopID);  loopID = -1; } } // 回收當前場景 function clearScene() { for(let i = Scene.children.length - 1; i >= 0; i-- ) {  Scene.remove(Scene.children[i]); } } // 清理頁面 function cleanPage() { renderStop(); clearScene(); } export { Scene, Camera, Renderer, Controls, createScene, initVR, renderStart, renderStop, clearScene, cleanPage }

創建一個VRpage基類

這是一個VRpage的基類,所有需要創建Three項目都需要繼承這個類,然后生成一個Three項目

 // VRpage.js import * as THREE from 'three'; import * as VRcore from './VRcore.js'; export default class VRpage { constructor(options) {  // 創建場景  VRcore.createScene(options);  this.start();  this.loadPage(); } loadPage() {  VRcore.renderStart(() => this.update());  this.loaded(); } initPage() {  this.loadPage();  this.start(); } start() {} loaded() {} update() {} }

生成一個Three.js的項目

下面的文件是一個繼承了VRpage類的一個類,然后我們重寫了start方法以及update方法,start方法中我們向場景中添加了一個正方體,update方法是我們給這個正方體的一個變形動畫,他會結合VRcore.js里面的renderStart方法來進行動畫效果

 // page.js import * as THREE from 'three'; import VRpage from '../../utils/VRpage.js'; import * as VRcore from '../../utils/VRcore.js'; export default class Page extends VRpage { start() { // 啟動渲染之前,創建場景3d模型  let geometry = new THREE.CubeGeometry(100,100,100);  let material = new THREE.MeshLambertMaterial( { color:0x0000ff} );  this.box = new THREE.Mesh(geometry,material);  this.box.position.set(3, -2, -3);  const PointLight = new THREE.PointLight(0xffffff);  PointLight.position.set(500, 500, 500);  const AmbientLight = new THREE.AmbientLight( 0x404040 ); // soft white light  VRcore.Scene.add(PointLight);  VRcore.Scene.add(AmbientLight);  VRcore.Scene.background = new THREE.Color( 0xeeeeee ); // 更改場景背景色  VRcore.Scene.add(this.box); } update() {  this.box.rotation.y += 0.01; } }

這里我使用的是react的框架

 // index.js import React, { Component } from 'react'; import PropTypes from 'prop-types'; import Page from './Page.js'; class Oho extends Component { constructor() {  super();  this.init = this.init.bind(this); } componentDidMount() {  const dom = document.querySelector('#Oho');  this.init(dom); } init(dom) {  const page = new Page({domContainer: dom}); } render() {  return (  <div className="three-demo">   <canvas id="Oho" ref="camera"></canvas>  </div>  ); } } export default Oho;

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
92看片淫黄大片看国产片| 亚洲小视频在线| 91在线精品视频| 97碰碰碰免费色视频| 亚洲激情久久久| 日韩精品亚洲视频| 日韩在线观看成人| 日韩在线观看网站| 91久久精品国产91久久性色| 国产福利视频一区二区| 欧美福利小视频| 在线日韩中文字幕| 国产精品影院在线观看| 日韩av最新在线| 亚洲性生活视频在线观看| 草民午夜欧美限制a级福利片| 国产精品成人品| 亚洲第一av网| 成人精品在线观看| 色在人av网站天堂精品| 亚洲国产精品va在线看黑人| 亚洲精品国产综合区久久久久久久| 欧美小视频在线观看| 亚洲国产精彩中文乱码av在线播放| 亚洲精品免费一区二区三区| 欧洲亚洲免费视频| 欧美亚洲一级片| 欧美黑人狂野猛交老妇| 色999日韩欧美国产| 国产精品国产三级国产专播精品人| 欧美二区在线播放| 成人福利在线视频| 亚洲色图av在线| 亚洲国产精品人久久电影| 亚洲国产精品字幕| 欧美视频裸体精品| 国产精品久久久久久网站| 一区二区三区 在线观看视| 久久理论片午夜琪琪电影网| 精品国产精品三级精品av网址| 欧美成人在线免费视频| 91精品免费看| 欧美另类极品videosbestfree| 国产精品视频一区二区高潮| 欧美日韩成人在线观看| 国产精品九九久久久久久久| 亚洲国产天堂久久综合网| 日韩av一区二区在线观看| 97成人精品视频在线观看| 国产精品成人品| 日韩视频在线一区| 亚洲国产91精品在线观看| 91国自产精品中文字幕亚洲| 91手机视频在线观看| 国产精品久久一区| 亚洲老头同性xxxxx| 亚洲老司机av| 欧美另类xxx| 久久国产精品首页| 久久精品视频99| 亚洲第一网站免费视频| 97视频免费在线观看| 亚洲区一区二区| 伊人久久久久久久久久| 日韩av中文在线| 一区二区三区视频免费| 欧美日韩国产在线| 狠狠色狠狠色综合日日五| 一本色道久久88综合日韩精品| 成人国产在线视频| 免费99精品国产自在在线| 国产精品夜色7777狼人| 国产精品视频久久久| 国产精品美腿一区在线看| 欧美贵妇videos办公室| 97国产精品免费视频| 琪琪亚洲精品午夜在线| 日韩免费观看高清| 国产成人精品国内自产拍免费看| 成人在线国产精品| 中文字幕亚洲欧美一区二区三区| 国产精品久久91| 亚洲欧美激情视频| 日韩久久午夜影院| 92裸体在线视频网站| 国产精品网站视频| 国产精品一区久久久| 91久久精品美女高潮| 国产精品欧美久久久| 久久精品欧美视频| 九九热这里只有在线精品视| 一本色道久久88综合亚洲精品ⅰ| 一区二区三区四区视频| 国产精品青青在线观看爽香蕉| 久久久久国产精品免费网站| 亚洲男人天天操| 一区国产精品视频| 国产精品稀缺呦系列在线| 国产在线不卡精品| 最近2019中文免费高清视频观看www99| 国产精品久久久久久亚洲调教| 亚洲国产天堂网精品网站| 国产91色在线免费| 日韩在线www| 日日摸夜夜添一区| 91sa在线看| 精品美女国产在线| 欧美xxxx综合视频| 日韩中文字幕免费视频| 成人久久一区二区三区| 亚洲福利视频网| 国产成人综合久久| 久久久精品视频在线观看| 久久全球大尺度高清视频| 国产精品高清在线观看| 国产精品日日摸夜夜添夜夜av| 精品在线欧美视频| 日韩美女免费视频| 亚洲尤物视频网| 亚洲另类欧美自拍| 亚洲毛片在线免费观看| 伊人久久久久久久久久| 国产精品白嫩初高中害羞小美女| 一本色道久久综合亚洲精品小说| 亚洲国产日韩一区| 欧美日韩性生活视频| 国产精品91一区| 91高清免费在线观看| 欧美电影免费观看| 国产噜噜噜噜噜久久久久久久久| 国产91精品久久久| 91色琪琪电影亚洲精品久久| 亚洲精品网站在线播放gif| 国产精自产拍久久久久久蜜| 色综合亚洲精品激情狠狠| 欧美另类极品videosbest最新版本| 日韩一区二区三区xxxx| 亚洲欧美日韩一区二区三区在线| 亚洲欧洲在线播放| 成人激情视频在线播放| 国产日韩av在线播放| 亚洲最大的免费| 中文字幕欧美精品在线| 日韩福利视频在线观看| 最近中文字幕mv在线一区二区三区四区| 日韩中文字幕视频在线| 国产精品久久久久久久久借妻| 日韩av在线播放资源| 热久久这里只有精品| 欧美成人午夜影院| 亚洲一区二区三| 人九九综合九九宗合| 992tv在线成人免费观看| 亚洲精品国产精品乱码不99按摩| 亚洲精品之草原avav久久| 欧洲亚洲妇女av| 欧美日韩国产色视频| 高清在线视频日韩欧美| 亚洲欧洲日本专区| 欧美在线日韩在线| 欧美在线观看网站| 国产色视频一区| 日韩在线欧美在线国产在线| 国产精品一区二区性色av|