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

首頁 > 開發 > JS > 正文

微信小游戲之使用three.js 繪制一個旋轉的三角形

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

three.js是一個可以使用javascript繪制3d圖形的庫,它對WebGL的api進行封裝,使開發更加方便,就像jQuery對DOM的api進行封裝一樣。接下來就記錄一下在小游戲中繪制一個 旋轉的三角形的步驟:

一. 初始化項目

下載微信官方的開發者工具,然后新建項目

微信小游戲,three.js,三角形

appid選擇測試號即可,項目路徑自行指定

用編輯器打開項目,得到如下目錄:

微信小游戲,three.js,三角形

然后除了game.js,game.json, project.config.json全部刪除,并把game.js中的內容清空。

微信小游戲,three.js,三角形

game.js是整個小游戲的入口,game.json是小游戲配置。具體參考文檔。

二. 引入three.js 和 Adapter

Adapter

小游戲的運行環境中是沒有 BOM 和 DOM 的,使用 wx API 模擬 BOM 和 DOM 的代碼組成的庫稱之為 Adapter。官方提供了一個Adapter,用它就行了。

Adapter文檔

three.js

gitHub地址

微信小游戲,three.js,三角形

復制three.min.js中的內容

新建目錄libs,將three.js和Adapter的源碼放在該目錄下

微信小游戲,three.js,三角形

在game.js中添加:

import './libs/weapp-adapter'import * as THREE from './libs/three'

三. 繪制三角形

根據adapter的文檔只要引入了adapter就會創建一個上屏 Canvas,并暴露為一個全局變量 canvas。

使用three.js渲染一個圖形必備的三個條件:渲染器,場景,相機

Renderer 渲染器

渲染器看名字就知道了,就是用于將圖形渲染到屏幕上的方法。

Scene 場景

假如把繪制的圖形看做是一個個物體的話,那么場景就是用來存放這些物體的地方。

Camera 相機

相機就好像人的眼睛一樣,相機用于確定在什么地方去看場景中的物體,就好像有一個東西,不同的角度去看這個物體,看到的有可能是不一樣的形狀。

在game.js 中創建這三個東西

import './libs/weapp-adapter'import * as THREE from './libs/three'const width = window.innerWidthconst height = window.innerHeight// 創建WebGL渲染器const renderer = new THREE.WebGLRenderer({ // 由于weapp-adapter會自動創建一個全屏的canvas所以這里直接用 canvas})// 創建場景const scene = new THREE.Scene()/**  * OrthographicCamera是正交相機, * 在這種投影模式下,無論物體距離相機距離遠或者近,在最終渲染的圖片中物體的大小都保持不變。 */const camera = new THREE.OrthographicCamera(-width / 2, width / 2, height / 2, -height / 2, 0, 1000)new THREE.OrthographicCamera 的參數可以參考官方文檔或者 Three.js基礎探尋二——正交投影照相機

現在必要的三個條件都有了,就要添加物體到場景中了。

物體在three.js中叫做mesh,它由幾何體(geometry)和材料(material)組成。

我的理解就是幾何體就是物體的基本形狀,就像WebGL中的頂點著色器,材料就是幾何體的顏色啊,光照等信息,就像WebGL中的片元著色器。

three.js中提供了很多幾何體,但是好像沒有基本的三角形,所以要自己畫一個三角形。

在game.js 中添加:

// 畫一個三角形const triangleShape = new THREE.Shape()triangleShape.moveTo(0, 100) // 三角形起始位置triangleShape.lineTo(-100, -100)triangleShape.lineTo(100, -100)triangleShape.lineTo(0, 100)

這里說一下three.js的坐標系

微信小游戲,three.js,三角形

有了三角形的基本形狀,通過three.js中提供的api,將這個三角形變成幾何體

在game.js 中添加:

// 將三角形變成組成物體的幾何體const geometry = new THREE.ShapeGeometry(triangleShape)

組成物體的幾何體就搞定了。

然后就是材料了:

在game.js 中添加:

// 物體的材料const material = new THREE.MeshBasicMaterial({ color: new THREE.Color('#7fffd4'), // 顏色信息 side: THREE.DoubleSide   // 用于確定渲染哪一面,因為是旋轉的,所以需要正反面都渲染,也就是兩面})

用幾何體 + 材料組成物體,并添加到場景中:

// 組成物體并添加到場景中const mesh = new THREE.Mesh(geometry, material)mesh.position.set(0, 0, -200) // 設置物體在場景中的位置scene.add(mesh)

設置相機的位置以及看向的坐標

camera.position.set(0, 0, 0) // 相機位置camera.lookAt(new THREE.Vector3(0, 0, -200)) // 讓相機從0, 0, 0 看向 0, 0, -200

最后一步就是渲染了:

renderer.setClearColor(new THREE.Color('#f84462')) // 設置背景色renderer.setSize(width, height) // 設置最終渲染的尺寸renderer.render(scene, camera)

這時候去在開發者工具中就可以看到一個三角形了:

微信小游戲,three.js,三角形

四. 讓三角形動起來

const render = () => { mesh.rotateY(0.05) // three.js 中旋轉角度是通過弧度計算的,公式:度=弧度×180°/π renderer.render(scene, camera) requestAnimationFrame(render)}render()

完整代碼:

import './libs/weapp-adapter'import * as THREE from './libs/three'const width = window.innerWidthconst height = window.innerHeight// 創建WebGL渲染器const renderer = new THREE.WebGLRenderer({ // 由于weapp-adapter會自動創建一個全屏的canvas所以這里直接用 canvas})// 創建場景const scene = new THREE.Scene()/**  * OrthographicCamera是正交相機, * 在這種投影模式下,無論物體距離相機距離遠或者近,在最終渲染的圖片中物體的大小都保持不變。 */const camera = new THREE.OrthographicCamera(-width / 2, width / 2, height / 2, -height / 2, 0, 1000)// 畫一個三角形const triangleShape = new THREE.Shape()triangleShape.moveTo(0, 100) // 三角形起始位置triangleShape.lineTo(-100, -100)triangleShape.lineTo(100, -100)triangleShape.lineTo(0, 100)// 將三角形變成組成物體的幾何體const geometry = new THREE.ShapeGeometry(triangleShape)// 物體的材料const material = new THREE.MeshBasicMaterial({ color: new THREE.Color('#7fffd4'), // 顏色信息 side: THREE.DoubleSide   // 用于確定渲染哪一面,因為是旋轉的,所以需要正反面都渲染,也就是兩面})// 組成物體并添加到場景中const mesh = new THREE.Mesh(geometry, material)mesh.position.set(0, 0, -200) // 設置物體在場景中的位置scene.add(mesh)camera.position.set(0, 0, 0) // 相機位置camera.lookAt(new THREE.Vector3(0, 0, -200)) // 讓相機從0, 0, 0 看向 0, 0, -200renderer.setClearColor(new THREE.Color('#f84462')) // 設置背景色renderer.setSize(width, height) // 設置最終渲染的尺寸const render = () => { mesh.rotateY(0.05) // three.js 中旋轉角度是通過弧度計算的,公式:度=弧度×180°/π renderer.render(scene, camera) requestAnimationFrame(render)}render()

總結

以上所述是小編給大家介紹的微信小游戲之使用three.js 繪制一個旋轉的三角形,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品吊钟奶在线| 亚洲一区二区精品| 成人精品网站在线观看| 日韩精品视频在线免费观看| 日本aⅴ大伊香蕉精品视频| 国产91精品久久久| 亚洲欧美日韩爽爽影院| 精品中文字幕乱| 久久久精品免费视频| 欧美精品九九久久| 亚洲欧美成人一区二区在线电影| 午夜精品久久久久久99热| 啊v视频在线一区二区三区| 精品夜色国产国偷在线| 好吊成人免视频| 成人黄色短视频在线观看| 亚洲影影院av| 久久久999成人| 国产精品中文字幕在线观看| 成人福利视频在线观看| 亚洲精品欧美日韩专区| 97国产精品久久| 91影视免费在线观看| 欧美激情视频一区| 成人网欧美在线视频| 久久91亚洲精品中文字幕| 一夜七次郎国产精品亚洲| 日韩美女免费观看| 日本精品视频在线播放| 亚洲毛片在线观看| 亚洲第一精品久久忘忧草社区| www.亚洲天堂| 2019中文字幕免费视频| 日韩精品亚洲元码| 91高清视频在线免费观看| 国产精品女视频| 欧美激情va永久在线播放| 欧美精品18videos性欧美| 精品毛片三在线观看| 亚洲一区二区中文| 亚洲欧美日韩精品久久| 日本一区二区三区四区视频| 在线日韩精品视频| 亚洲欧洲午夜一线一品| 日韩av在线影院| 久久精品中文字幕一区| 亚洲大尺度美女在线| 日韩国产精品亚洲а∨天堂免| 亚洲视频一区二区| 成人黄色在线免费| 国产91色在线|免| 精品欧美aⅴ在线网站| xvideos亚洲人网站| 欧美极品美女电影一区| 亚洲国产免费av| 中文字幕日韩在线观看| 另类专区欧美制服同性| 色综合色综合久久综合频道88| 国模精品一区二区三区色天香| 亚洲国产97在线精品一区| 国产成人精品电影久久久| 97在线视频免费播放| 最近2019年手机中文字幕| 欧美日韩亚洲天堂| 亚洲国产一区自拍| 亚洲美女www午夜| 日韩av在线网站| 日韩最新在线视频| 精品亚洲永久免费精品| 亚洲综合国产精品| 色婷婷av一区二区三区久久| 久久久久久亚洲精品不卡| 欧美在线免费观看| 91精品在线播放| 欧美综合在线第二页| 91精品国产一区| 亚洲片国产一区一级在线观看| 亚洲国产成人91精品| 精品中文字幕在线2019| 久久久久五月天| 久久精品国产清自在天天线| 亚洲а∨天堂久久精品9966| 中文字幕日韩电影| 国产91精品视频在线观看| 欧美性xxxx18| 亚洲免费高清视频| 日韩电影中文字幕在线| 久久99精品久久久久久青青91| 午夜精品视频网站| 亚洲国产毛片完整版| 青青青国产精品一区二区| 孩xxxx性bbbb欧美| 欧美性猛交xxxx黑人猛交| 国产色综合天天综合网| 亚洲精品免费网站| 欧美成人午夜影院| 成人网在线观看| 成人激情在线观看| 毛片精品免费在线观看| 国产精品视频白浆免费视频| 亚洲成人激情小说| 久久成人综合视频| 国产激情视频一区| 久久久久久免费精品| 91亚洲精品视频| 日韩成人在线电影网| 亚洲男人天堂2023| 国产精品mp4| 国产精品视频久| 亚洲精品电影久久久| 2019日本中文字幕| 亚洲国产97在线精品一区| 亚洲欧美日韩直播| 中文字幕成人在线| 亚洲精品网站在线播放gif| 亚洲欧美另类中文字幕| 欧美色另类天堂2015| 亚洲色图色老头| 欧美猛交免费看| 一本色道久久综合狠狠躁篇的优点| 在线观看中文字幕亚洲| 欧美另类高清videos| 国产欧美一区二区三区在线| 国产一区二区三区在线播放免费观看| 亚洲欧洲免费视频| 最近免费中文字幕视频2019| 欧美日韩在线看| 欧美激情videoshd| 国产精品福利网站| 亚洲天堂男人天堂| 欧美在线免费观看| 成人情趣片在线观看免费| 欧美性视频网站| www.精品av.com| 高跟丝袜一区二区三区| 亚洲国产高潮在线观看| 日本免费久久高清视频| 国产国语刺激对白av不卡| 亚洲香蕉av在线一区二区三区| 欧美电影免费播放| 国产成人精品久久| 色在人av网站天堂精品| 国产精品高潮粉嫩av| 亚洲免费成人av电影| 国产精品视频永久免费播放| 7m精品福利视频导航| 插插插亚洲综合网| 日韩av不卡在线| 久久久久国色av免费观看性色| 久久免费视频在线| 国模gogo一区二区大胆私拍| 亚洲欧美国产精品va在线观看| 欧美孕妇孕交黑巨大网站| 久久精品99久久久久久久久| 亚洲视频欧洲视频| 日韩毛片在线观看| xvideos成人免费中文版| 久久久久www| 亚洲国产精品小视频| 亚洲аv电影天堂网| 亚洲无av在线中文字幕| 久久国产精品免费视频| 欧美最猛性xxxx| 国产精品久久久久久久久久ktv|