国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

這篇具有很好參考價(jià)值的文章主要介紹了Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

本文主要介紹如何使用Vue3和TypeScript引入BabylonJs技術(shù)實(shí)現(xiàn)3D效果。結(jié)合實(shí)際案例,詳細(xì)講解了如何在Vue3項(xiàng)目中引入BabylonJs,并了解其相關(guān)知識(shí)。通過(guò)本文的學(xué)習(xí),相信讀者可以輕松掌握Vue3實(shí)現(xiàn)3D效果以及BabylonJs的相關(guān)知識(shí)。
Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

一、創(chuàng)建項(xiàng)目

1、創(chuàng)建Vue3 + TypeScript項(xiàng)目

npm create vite@latest babylonjs-vue3-ts -- --template vue

將生成的js文件都修改為ts文件
Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

2、用WebStorm打開(kāi)項(xiàng)目

(1)打開(kāi)項(xiàng)目以后執(zhí)行 npm install

Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

(2)運(yùn)行項(xiàng)目npm run dev

訪問(wèn):http://127.0.0.1:5173/
Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

二、引入 BabylonJs

我們需要將Babylon包安裝到項(xiàng)目中,并使用其中的幾個(gè)包。我們從Babylon的核心包開(kāi)始,使用以下命令在終端中進(jìn)行安裝:

npm install @babylonjs/core

Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

三、創(chuàng)建 Babylon.vue

Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

<template>

</template>

<script setup lang="ts">
import { onMounted } from 'vue';
onMounted(()=>{
  const canvas = document.querySelector("canvas")
})
</script>

<style scoped>

</style>

Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】
Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】
Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

// @ts-ignore
import { Scene, Engine,FreeCamera,HemisphericLight,Vector3 ,MeshBuilder,MeshBuilder} from "@babylonjs/core"
export class BabylonScene {
    scene: Scene;
    engine: Engine;
    constructor(private canvas: HTMLCanvasElement) {
        this.engine = new Engine(this.canvas, true);
        this.scene = this.CreateScene();
        this.engine.runRenderLoop(() => {
            this.scene.render();
        });
    }
    CreateScene(): Scene {
        const scene = new Scene(this.engine);
        //創(chuàng)建和定位自由攝影機(jī)
        const camera = new FreeCamera("camera1",
            new Vector3(0, 5, -10), scene);
        // 將攝影機(jī)定位到場(chǎng)景原點(diǎn)
        camera.setTarget(Vector3.Zero());
        // 這會(huì)將相機(jī)連接到畫(huà)布
        camera.attachControl(this.canvas, true);
        // 創(chuàng)建燈光,目標(biāo)為0,1,0-指向天空
        const light = new HemisphericLight("light",
            new Vector3(0, 1, 0), scene);
        // 將燈光調(diào)暗一小部分-0到1
        light.intensity = 0.7;
        // 內(nèi)置“球體”形狀。
        const sphere = MeshBuilder.CreateSphere("sphere",
            {diameter: 2, segments: 32}, scene);
        // 將球體向上移動(dòng)其高度的1/2
        sphere.position.y = 1;
        // 內(nèi)置“地面”形狀。
        const ground = MeshBuilder.CreateGround("ground",
            {width: 6, height: 6}, scene);
        return scene;
    }
}


四、場(chǎng)景渲染

在Babylon.vue引入剛剛創(chuàng)建的BabylonScene
Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

<template>
  <div >
    <canvas style="height: 100%;width: 100%"></canvas>
  </div>
</template>

<script setup lang="ts">
import { onMounted } from 'vue';
import { BabylonScene } from '../BabylonEngine/BabylonScene';
onMounted(()=>{
  const canvas =  document.querySelector("canvas");
  var scene  = new BabylonScene(canvas);
})
</script>

<style scoped>

</style>

在App.vue 引入Babylon.vue組件
Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】

五、運(yùn)行最終效果

Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-441375.html

到了這里,關(guān)于Vue3 +TypeScript 引入 BabylonJs(Vue3實(shí)現(xiàn)3D)【一篇文章精通系列】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 一篇文章讓你搞懂TypeScript中的typeof()、keyof()是什么意思

    一篇文章讓你搞懂TypeScript中的typeof()、keyof()是什么意思

    知識(shí)專欄 專欄鏈接 TypeScript知識(shí)專欄 https://blog.csdn.net/xsl_hr/category_12030346.html?spm=1001.2014.3001.5482 有關(guān)TypeScript的相關(guān)知識(shí)可以前往TypeScript知識(shí)專欄查看復(fù)習(xí)??! 最近在 前端的深入學(xué)習(xí)過(guò)程 中,接觸了與 網(wǎng)絡(luò)請(qǐng)求 相關(guān)的內(nèi)容,于是計(jì)劃用三個(gè)專欄( HTTP 、 Axios 、 Ajax )和零碎

    2023年04月21日
    瀏覽(28)
  • 《Vue3+Typescript》一個(gè)簡(jiǎn)單的日歷組件實(shí)現(xiàn)

    《Vue3+Typescript》一個(gè)簡(jiǎn)單的日歷組件實(shí)現(xiàn)

    這是一個(gè)沒(méi)有套路的前端博主,熱衷各種前端向的騷操作,經(jīng)常想到哪就寫(xiě)到哪,如果有感興趣的技術(shù)和前端效果可以留言~博主看到后會(huì)去代替大家踩坑的~ 主頁(yè): oliver尹的主頁(yè) 格言: 跌倒了爬起來(lái)就好~ 目錄 一、前言 二、效果圖 三、核心思路 四、代碼實(shí)現(xiàn) 4.1 本月日期

    2024年02月14日
    瀏覽(22)
  • Vue中的Pinia狀態(tài)管理工具 | 一篇文章教會(huì)你全部使用細(xì)節(jié)

    Vue中的Pinia狀態(tài)管理工具 | 一篇文章教會(huì)你全部使用細(xì)節(jié)

    Pinia(發(fā)音為/pi?nj?/,如英語(yǔ)中的“peenya”)是最接近pi?a(西班牙語(yǔ)中的菠蘿)的詞 ; Pinia開(kāi)始于大概2019年,最初是 作為一個(gè)實(shí)驗(yàn)為Vue重新設(shè)計(jì)狀態(tài)管理 ,讓它用起來(lái)適合組合式API(Composition API)。 從那時(shí)到現(xiàn)在,最初的設(shè)計(jì)原則依然是相同的,并且目前同時(shí)兼容Vue2、

    2024年02月11日
    瀏覽(23)
  • 一篇文章告訴你JavaScript 如何實(shí)現(xiàn)繼承

    一篇文章告訴你JavaScript 如何實(shí)現(xiàn)繼承

    JavaScript 在編程語(yǔ)言界是個(gè)特殊種類,它和其他編程語(yǔ)言很不一樣,JavaScript 可以在運(yùn)行的時(shí)候動(dòng)態(tài)地改變某個(gè)變量的類型。 比如你永遠(yuǎn)也沒(méi)法想到像isTimeout這樣一個(gè)變量可以存在多少種類型,除了布爾值true和false,它還可能是undefined、1和0、一個(gè)時(shí)間戳,甚至一個(gè)對(duì)象。 如

    2024年02月10日
    瀏覽(26)
  • 一篇文章帶你實(shí)現(xiàn)棧的接口

    一篇文章帶你實(shí)現(xiàn)棧的接口

    棧(Stacks)是限定在一端插入和刪除的線性表。允許插入和刪除的一端稱為棧頂(Top),另一端稱為棧底(Bottom)。棧中的數(shù)據(jù)元素遵守后進(jìn)先出(Last In First Out)的原則。因此,棧又稱為后進(jìn)先出(先進(jìn)后出)線性表。 壓棧:棧的插入操作叫做進(jìn)棧、壓棧、入棧,入數(shù)據(jù)在

    2024年02月13日
    瀏覽(22)
  • vue3項(xiàng)目引入本地js文件,實(shí)現(xiàn)一個(gè)音頻播放按鈕

    vue3項(xiàng)目引入本地js文件,實(shí)現(xiàn)一個(gè)音頻播放按鈕

    目前有一個(gè)需求就是在網(wǎng)頁(yè)上放置一個(gè)音樂(lè)控制按鈕,并且是在vue3項(xiàng)目里面。于是小白的我遇到了2個(gè)問(wèn)題,第一個(gè)問(wèn)題是如何實(shí)現(xiàn)沒(méi)有進(jìn)度條的播放按鈕,這個(gè)網(wǎng)上有現(xiàn)成的代碼,可以通過(guò)js代碼切換不同的圖片或者是別的樣式,并不算難;第二個(gè)問(wèn)題是如何在vue3項(xiàng)目中引

    2024年02月19日
    瀏覽(103)
  • C++初階之一篇文章教會(huì)你list(模擬實(shí)現(xiàn))

    C++初階之一篇文章教會(huì)你list(模擬實(shí)現(xiàn))

    成員類型表 這個(gè)表中列出了C++標(biāo)準(zhǔn)庫(kù)中l(wèi)ist容器的一些成員類型定義。這些類型定義是為了使list能夠與C++標(biāo)準(zhǔn)庫(kù)的其他組件協(xié)同工作,并提供一些通用的標(biāo)準(zhǔn)接口。每個(gè)成員類型的用處: value_type : 這個(gè)成員類型代表list容器中存儲(chǔ)的數(shù)據(jù)類型,即模板參數(shù)T的類型。 allocator_

    2024年02月12日
    瀏覽(26)
  • C++初階之一篇文章讓你掌握vector(模擬實(shí)現(xiàn))

    C++初階之一篇文章讓你掌握vector(模擬實(shí)現(xiàn))

    模擬實(shí)現(xiàn)vector是為了深入理解和學(xué)習(xí)C++標(biāo)準(zhǔn)庫(kù)中vector容器的工作原理和實(shí)現(xiàn)細(xì)節(jié)。 vector是C++標(biāo)準(zhǔn)庫(kù)中最常用的容器之一,它提供了動(dòng)態(tài)數(shù)組的功能,并且具有自動(dòng)擴(kuò)容和內(nèi)存管理的特性,使得在使用時(shí)非常方便。 模擬實(shí)現(xiàn)vector有以下幾個(gè)優(yōu)點(diǎn): 學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法 :實(shí)現(xiàn)

    2024年02月14日
    瀏覽(25)
  • 王者榮耀戰(zhàn)區(qū)活躍度排名怎么實(shí)現(xiàn)的?這篇文章給你答案!

    王者榮耀戰(zhàn)區(qū)活躍度排名怎么實(shí)現(xiàn)的?這篇文章給你答案!

    ??博客主頁(yè):阿博歷練記 ??文章專欄:數(shù)據(jù)結(jié)構(gòu)與算法 ??代碼倉(cāng)庫(kù):阿博編程日記 ??歡迎關(guān)注:歡迎友友們點(diǎn)贊收藏+關(guān)注哦?? 堆的概念及結(jié)構(gòu): 堆的性質(zhì): 1.堆中某個(gè)節(jié)點(diǎn)的值總是 不大于 或 不小于 其 父節(jié)點(diǎn) 的值; 大堆:樹(shù)中任何一個(gè)父親都大于等于孩子。 小堆:樹(shù)中

    2024年02月08日
    瀏覽(29)
  • C++初階之一篇文章讓你掌握string類(模擬實(shí)現(xiàn))

    C++初階之一篇文章讓你掌握string類(模擬實(shí)現(xiàn))

    模擬實(shí)現(xiàn) std::string 是一個(gè)有挑戰(zhàn)性的練習(xí),它可以帶來(lái)多方面的收益,尤其對(duì)于學(xué)習(xí) C++ 和深入了解字符串操作以及動(dòng)態(tài)內(nèi)存管理的機(jī)制。以下是模擬實(shí)現(xiàn) std::string 的一些好處和重要意義: 學(xué)習(xí) C++ 內(nèi)存管理 :std::string 是一個(gè)動(dòng)態(tài)分配內(nèi)存的容器,模擬實(shí)現(xiàn)需要手動(dòng)處理內(nèi)

    2024年02月15日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包