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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 14:35: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;

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一级二级| 亚洲国产日韩一区| 欧美性猛交xxxx乱大交极品| 在线色欧美三级视频| 亚洲午夜未满十八勿入免费观看全集| 亚洲国产91精品在线观看| 国产精品久久久久久亚洲影视| 亚洲综合精品一区二区| 亚洲老司机av| 97在线观看免费高清| www.久久色.com| 2018中文字幕一区二区三区| 美乳少妇欧美精品| 成人久久久久爱| 日韩av成人在线观看| 国产视频精品在线| 久久精品国产一区二区电影| 欧洲亚洲女同hd| 国产一区二区av| 久久国产精品99国产精| 亚洲欧美综合精品久久成人| 久久久久久久久爱| 日韩欧美亚洲国产一区| 菠萝蜜影院一区二区免费| 亚洲国模精品私拍| 亚洲国产精品va在线| 高清在线视频日韩欧美| 国产欧美一区二区三区在线| 狠狠躁18三区二区一区| 亚洲人成人99网站| 日本免费一区二区三区视频观看| 欧美性开放视频| 国产精品69久久久久| 九九久久精品一区| 1769国产精品| 国产欧美一区二区三区在线| 精品视频偷偷看在线观看| 久久久久999| www高清在线视频日韩欧美| 国产精品国产三级国产aⅴ9色| 色噜噜狠狠狠综合曰曰曰88av| 欧美高清理论片| 亚洲一区二区三区乱码aⅴ| 91国在线精品国内播放| 亚洲奶大毛多的老太婆| 国产精品96久久久久久| 秋霞成人午夜鲁丝一区二区三区| 最好看的2019年中文视频| 色偷偷噜噜噜亚洲男人的天堂| 日韩高清中文字幕| 亚洲人高潮女人毛茸茸| 亚洲欧美国产一本综合首页| 法国裸体一区二区| 国产精品久久久久久久电影| 欧美大荫蒂xxx| 国产v综合ⅴ日韩v欧美大片| 国产欧亚日韩视频| 日韩成人在线观看| 精品久久香蕉国产线看观看gif| 91中文在线观看| 日韩高清有码在线| 欧美性猛交丰臀xxxxx网站| 91超碰中文字幕久久精品| 日韩欧美在线观看视频| 一区二区三区视频免费在线观看| 日av在线播放中文不卡| 中文字幕精品国产| 粉嫩av一区二区三区免费野| 日韩欧美成人免费视频| 亚洲成人精品视频| 神马久久久久久| 精品亚洲国产视频| 欧美中在线观看| 超碰91人人草人人干| 亚洲sss综合天堂久久| 精品亚洲aⅴ在线观看| 成人精品久久av网站| 久久99视频免费| 精品一区二区电影| 日韩有码在线观看| 日韩精品中文字幕在线观看| 在线观看精品自拍私拍| 亚洲精品久久久久国产| 国产精品日日摸夜夜添夜夜av| 久久91超碰青草是什么| 亚洲精品久久7777777| 日本高清不卡在线| 久久九九热免费视频| 国内精品久久久久影院优| 欧美成年人视频网站| 亚洲一级免费视频| 亚洲精品一区久久久久久| 亚洲天堂久久av| 欧美专区第一页| 国产精品网址在线| 成人免费看黄网站| 91av在线视频观看| www.欧美精品| 国产精品一区专区欧美日韩| 日韩视频免费大全中文字幕| 日韩免费在线播放| 国产69精品久久久久9999| 在线视频欧美性高潮| 欧美壮男野外gaytube| 日韩**中文字幕毛片| 中文字幕在线看视频国产欧美在线看完整| 欧美日韩福利在线观看| 高跟丝袜一区二区三区| 国产精品av在线播放| 欧美一级在线亚洲天堂| 久久久97精品| 国产精品aaaa| 超碰97人人做人人爱少妇| 久久99精品久久久久久青青91| 亚洲网站视频福利| 国色天香2019中文字幕在线观看| 国产精品黄色影片导航在线观看| 国产精品极品美女在线观看免费| 久久久久久美女| 国产极品jizzhd欧美| 成人国产在线视频| 亚洲丝袜一区在线| 欧美极品少妇xxxxⅹ裸体艺术| 久久国产一区二区三区| 欧美精品在线观看| 91中文精品字幕在线视频| 欧美成人精品在线| 久久免费精品视频| 欧美视频一二三| 欧美午夜精品久久久久久浪潮| 日韩精品免费观看| 亚洲人成欧美中文字幕| 97av在线影院| 日韩禁在线播放| zzijzzij亚洲日本成熟少妇| 国产精品九九九| 久久深夜福利免费观看| 国产精品中文字幕在线| 欧美成人精品三级在线观看| 国产午夜精品久久久| 68精品久久久久久欧美| 亚洲性av网站| 热门国产精品亚洲第一区在线| 国产精品最新在线观看| 国产一区二区在线免费| 欧美日韩国产中文精品字幕自在自线| 热久久免费视频精品| 136fldh精品导航福利| 91探花福利精品国产自产在线| 97视频在线免费观看| 亚洲综合成人婷婷小说| 日韩av不卡在线| 91国内产香蕉| 精品日本美女福利在线观看| 午夜精品国产精品大乳美女| 91免费福利视频| 91精品视频一区| 欧美性jizz18性欧美| 91精品久久久久久久久久久久久| 国产精品欧美一区二区三区奶水| 久热99视频在线观看| 成人午夜激情网| 亚洲二区中文字幕| 亚洲视频一区二区三区|