最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uniapp小程序和h5如何使用three.js詳解

 更新時(shí)間:2022年12月12日 10:51:23   作者:山與路  
Three.js是通過(guò)對(duì)WebGL接口的封裝與簡(jiǎn)化而形成的一個(gè)易用的圖形庫(kù),下面這篇文章主要給大家介紹了關(guān)于uniapp小程序和h5如何使用three.js的相關(guān)資料,需要的朋友可以參考下

前言

個(gè)人認(rèn)為uniapp同時(shí)開(kāi)發(fā)小程序和h5多多少少在某些地方存在不兼容問(wèn)題,這也比較苦惱,特別是在使用某些ui庫(kù)的時(shí)候更加讓人頭大,要邊看邊對(duì)比,有時(shí)候h5那邊樣式或者什么的都o(jì)k,但是小程序那邊就直接拉胯,著實(shí)有點(diǎn)難受,好了廢話(huà)不多說(shuō)了

h5

threejs本身好像就是開(kāi)發(fā)web的一個(gè)庫(kù),所以我們先從簡(jiǎn)單入手,h5對(duì)threejs的兼容性要比小程序要好很多,而且方便很多

首先我們需要去官網(wǎng)下載相關(guān)的threejs的相關(guān)庫(kù)

threejs.org/build/three…

three.js/examples at…

在寫(xiě)之前我們需要先導(dǎo)入必要的包

const  THREE=require('@/static/js/three.js');
import {
OrbitControls
} from '@/static/js/lib/controls/OrbitCon

在使用時(shí)可能會(huì)出現(xiàn)以下情況

我們直接找到OrbitControls.js文件導(dǎo)入three.js即可,可能還有更好的方法

小程序

小程序其實(shí)對(duì)threejs兼容性不是很好,我也不知道到底哪個(gè)庫(kù)能完全兼容threejs,不過(guò)個(gè)人目前使用three-platformize比較好的

安裝依賴(lài)

這里直接安裝小程序版的threejs----->three-platformize

yarn add three-platformize

這里為什么要直接安裝three-platformize而不安裝threejs,因?yàn)?strong>three-platformize要依賴(lài)threejs,所以three-platformize會(huì)自帶threejs相關(guān)的包

繪制立方體

var scene = new THREE.Scene();
		var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 0, 10);
scene.add(camera);
const geometry = new THREE.BoxGeometry(1, 1, 1);
const materials = new THREE.MeshBasicMaterial();
const cube = new THREE.Mesh(geometry, materials);
scene.add(cube);
const light = new THREE.AmbientLight(0xffffff);
scene.add(light);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
let t = document.getElementById('content');
t.appendChild(renderer.domElement);
const controls = new THREE.OrbitControls(camera, renderer.domElement)
function animate() {
        requestAnimationFrame(animate);
        renderer.render(scene, camera);
}
animate();

這樣即可實(shí)現(xiàn)立方體,基本上和其他threejs使用一致,所以這里也不多說(shuō)什么了

繪制一個(gè)可以旋轉(zhuǎn)的立方體

在寫(xiě)之前我們需要先導(dǎo)入必要的包

import * as THREE from 'three-platformize';
//軌道控制器
import { OrbitControls } from 'three-platformize/examples/jsm/controls/OrbitControls'

接下來(lái)我們需要在html寫(xiě)一個(gè)canvas,這個(gè)是必須要寫(xiě)的,因?yàn)樾〕绦蚝孟裰恢С钟?strong>canvas的基礎(chǔ)下對(duì)canvas進(jìn)行繪制

接下來(lái)獲取canvas

我們要先獲取到canvas,獲取到當(dāng)前節(jié)點(diǎn),如果節(jié)點(diǎn)都獲取不到則代碼或許你得仔細(xì)看看,是不是單詞拼寫(xiě)錯(cuò)誤或者其他原因

uni.createSelectorQuery()
.in(this)
.select('#webgl')
.fields({ node: true })
.exec(res => {
        console.log(res[0].node);
});

獲取到節(jié)點(diǎn)后,則需要注冊(cè)WechatPlatform如果不注冊(cè)則在后續(xù)的WebGLRenderer將導(dǎo)致無(wú)法渲染

const canvas = res[0].node;
const platform = new WechatPlatform(canvas); // webgl canvas
platform.enableDeviceOrientation('game'); // 開(kāi)啟DeviceOrientation
THREE.PLATFORM.set(platform);
this.platform = platform;

three繪制立方體的代碼(這里就不介紹了,基本上和上面的h5代碼類(lèi)似)

var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, canvas.width / canvas.height, 0.1, 1000);
camera.position.set(0, 0, 10);
scene.add(camera);
const geometry = new THREE.BoxGeometry(1, 1, 1);
const materials = new THREE.MeshBasicMaterial();
const cube = new THREE.Mesh(geometry, materials);
scene.add(cube);
const light = new THREE.AmbientLight(0xffffff);
scene.add(light);
//注意,這里必須要添加一個(gè){ canvas: canvas },不然會(huì)報(bào)createElementNS錯(cuò)誤
const renderer = new THREE.WebGLRenderer({ canvas: canvas });
renderer.setSize(canvas.width, canvas.height);
const controls = new OrbitControls(camera, renderer.domElement);
function animate() {
    //這里不再是requestAnimationFrame而是canvas.requestAnimationFrame
    canvas.requestAnimationFrame(animate);
    renderer.render(scene, camera);
}
animate();

讓立方體可以自動(dòng)旋轉(zhuǎn)

小程序和h5是不一樣的,不能旦旦加了OrbitControls就能實(shí)現(xiàn)自由動(dòng),這里需要添加3個(gè)方法

  • touchStart
  • touchMove
  • touchEnd

添加這三個(gè)方法才能使立方體開(kāi)始任意旋轉(zhuǎn)

效果

總結(jié)

到此這篇關(guān)于uniapp小程序和h5使用three.js的文章就介紹到這了,更多相關(guān)uniapp小程序和h5使用three.js內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 原生js封裝的ajax方法示例

    原生js封裝的ajax方法示例

    這篇文章主要介紹了原生js封裝的ajax方法,結(jié)合實(shí)例形式分析了JavaScript封裝ajax操作及調(diào)用方法相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2018-08-08
  • JS中appendChild追加子節(jié)點(diǎn)無(wú)效的解決方法

    JS中appendChild追加子節(jié)點(diǎn)無(wú)效的解決方法

    這篇文章主要給大家介紹了關(guān)于JS中appendChild追加子節(jié)點(diǎn)無(wú)效的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)
    2018-10-10
  • JavaScript實(shí)現(xiàn)form表單的多文件上傳

    JavaScript實(shí)現(xiàn)form表單的多文件上傳

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)form表單的多文件上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • js正則表達(dá)式常用方法梳理(附代碼案例)

    js正則表達(dá)式常用方法梳理(附代碼案例)

    正則表達(dá)式在我們?nèi)粘痰墓ぷ黜?xiàng)目中,應(yīng)該是一個(gè)經(jīng)常用到的技能,在做一些字符的匹配和處理的過(guò)程中,發(fā)揮了很大的作用,這篇文章主要給大家介紹了關(guān)于js正則表達(dá)式常用方法的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • js jquery數(shù)組介紹

    js jquery數(shù)組介紹

    js jquery數(shù)組介紹,數(shù)組時(shí)編程中比較常用的處理,需要的朋友可以參考下
    2012-07-07
  • threejs使用JSON格式保存和加載整個(gè)場(chǎng)景分析

    threejs使用JSON格式保存和加載整個(gè)場(chǎng)景分析

    本文介紹了如何使用Three.js將三維場(chǎng)景保存為JSON格式,并加載整個(gè)場(chǎng)景,通過(guò)調(diào)用各個(gè)對(duì)象的.toJSON()方法,可以保存和加載立方體、球體、obj、glb等三維模型的頂點(diǎn)和材質(zhì)數(shù)據(jù),文章詳細(xì)講解了實(shí)現(xiàn)思路和代碼樣例,一起看看吧
    2024-11-11
  • JS實(shí)現(xiàn)頭像循環(huán)滾動(dòng)示例

    JS實(shí)現(xiàn)頭像循環(huán)滾動(dòng)示例

    這篇文章主要為大家介紹了JS實(shí)現(xiàn)頭像循環(huán)滾動(dòng)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • JavaScript 數(shù)組詳解

    JavaScript 數(shù)組詳解

    學(xué)習(xí)js就不得不學(xué)他的數(shù)組,這篇文章是由色拉油整理下,需要學(xué)習(xí)js數(shù)組的朋友可以參考下
    2013-10-10
  • Javascript中級(jí)語(yǔ)法快速入手

    Javascript中級(jí)語(yǔ)法快速入手

    本文是一篇關(guān)于Javascript的中級(jí)進(jìn)階總結(jié)。小編希望大家能夠在30分鐘之內(nèi)閱讀完并認(rèn)真體會(huì),多敲代碼,多總結(jié),畢竟Javascript本身并不難。
    2016-07-07
  • javascript常用方法總結(jié)

    javascript常用方法總結(jié)

    經(jīng)常使用的一些javascript方法,今天總結(jié)了一下,以便以后查詢(xún),有需要的小伙伴可以參考下。
    2015-05-05

最新評(píng)論

宜春市| 东光县| 建阳市| 建湖县| 蓬溪县| 久治县| 泉州市| 牙克石市| 济宁市| 武陟县| 宜宾县| 崇文区| 社旗县| 涟源市| 石柱| 水城县| 嘉黎县| 安吉县| 梅河口市| 莎车县| 江西省| 宝鸡市| 孟连| 章丘市| 区。| 峨边| 怀远县| 云阳县| 循化| 涞源县| 阜宁县| 沂源县| 江油市| 四川省| 绥阳县| 皋兰县| 巴林左旗| 甘谷县| 万山特区| 中宁县| 施秉县|