Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

这篇具有很好参考价值的文章主要介绍了Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要介绍如何使用Vue3和TypeScript引入BabylonJs技术实现3D效果。结合实际案例,详细讲解了如何在Vue3项目中引入BabylonJs,并了解其相关知识。通过本文的学习,相信读者可以轻松掌握Vue3实现3D效果以及BabylonJs的相关知识。
Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

一、创建项目

1、创建Vue3 + TypeScript项目

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

将生成的js文件都修改为ts文件
Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

2、用WebStorm打开项目

(1)打开项目以后执行 npm install

Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

(2)运行项目npm run dev

访问:http://127.0.0.1:5173/
Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

二、引入 BabylonJs

我们需要将Babylon包安装到项目中,并使用其中的几个包。我们从Babylon的核心包开始,使用以下命令在终端中进行安装:

npm install @babylonjs/core

Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】

三、创建 Babylon.vue

Vue3 +TypeScript 引入 BabylonJs(Vue3实现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实现3D)【一篇文章精通系列】
Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】
Vue3 +TypeScript 引入 BabylonJs(Vue3实现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);
        //创建和定位自由摄影机
        const camera = new FreeCamera("camera1",
            new Vector3(0, 5, -10), scene);
        // 将摄影机定位到场景原点
        camera.setTarget(Vector3.Zero());
        // 这会将相机连接到画布
        camera.attachControl(this.canvas, true);
        // 创建灯光,目标为0,1,0-指向天空
        const light = new HemisphericLight("light",
            new Vector3(0, 1, 0), scene);
        // 将灯光调暗一小部分-0到1
        light.intensity = 0.7;
        // 内置“球体”形状。
        const sphere = MeshBuilder.CreateSphere("sphere",
            {diameter: 2, segments: 32}, scene);
        // 将球体向上移动其高度的1/2
        sphere.position.y = 1;
        // 内置“地面”形状。
        const ground = MeshBuilder.CreateGround("ground",
            {width: 6, height: 6}, scene);
        return scene;
    }
}


四、场景渲染

在Babylon.vue引入刚刚创建的BabylonScene
Vue3 +TypeScript 引入 BabylonJs(Vue3实现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实现3D)【一篇文章精通系列】

五、运行最终效果

Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】文章来源地址https://www.toymoban.com/news/detail-441375.html

到了这里,关于Vue3 +TypeScript 引入 BabylonJs(Vue3实现3D)【一篇文章精通系列】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    知识专栏 专栏链接 TypeScript知识专栏 https://blog.csdn.net/xsl_hr/category_12030346.html?spm=1001.2014.3001.5482 有关TypeScript的相关知识可以前往TypeScript知识专栏查看复习!! 最近在 前端的深入学习过程 中,接触了与 网络请求 相关的内容,于是计划用三个专栏( HTTP 、 Axios 、 Ajax )和零碎

    2023年04月21日
    浏览(51)
  • 《Vue3+Typescript》一个简单的日历组件实现

    这是一个没有套路的前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~ 主页: oliver尹的主页 格言: 跌倒了爬起来就好~ 目录 一、前言 二、效果图 三、核心思路 四、代码实现 4.1 本月日期

    2024年02月14日
    浏览(36)
  • Vue中的Pinia状态管理工具 | 一篇文章教会你全部使用细节

    Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近piña(西班牙语中的菠萝)的词 ; Pinia开始于大概2019年,最初是 作为一个实验为Vue重新设计状态管理 ,让它用起来适合组合式API(Composition API)。 从那时到现在,最初的设计原则依然是相同的,并且目前同时兼容Vue2、

    2024年02月11日
    浏览(34)
  • 一篇文章告诉你JavaScript 如何实现继承

    JavaScript 在编程语言界是个特殊种类,它和其他编程语言很不一样,JavaScript 可以在运行的时候动态地改变某个变量的类型。 比如你永远也没法想到像isTimeout这样一个变量可以存在多少种类型,除了布尔值true和false,它还可能是undefined、1和0、一个时间戳,甚至一个对象。 如

    2024年02月10日
    浏览(31)
  • 一篇文章带你实现栈的接口

    栈(Stacks)是限定在一端插入和删除的线性表。允许插入和删除的一端称为栈顶(Top),另一端称为栈底(Bottom)。栈中的数据元素遵守后进先出(Last In First Out)的原则。因此,栈又称为后进先出(先进后出)线性表。 压栈:栈的插入操作叫做进栈、压栈、入栈,入数据在

    2024年02月13日
    浏览(42)
  • vue3项目引入本地js文件,实现一个音频播放按钮

    目前有一个需求就是在网页上放置一个音乐控制按钮,并且是在vue3项目里面。于是小白的我遇到了2个问题,第一个问题是如何实现没有进度条的播放按钮,这个网上有现成的代码,可以通过js代码切换不同的图片或者是别的样式,并不算难;第二个问题是如何在vue3项目中引

    2024年02月19日
    浏览(39)
  • C++初阶之一篇文章教会你list(模拟实现)

    成员类型表 这个表中列出了C++标准库中list容器的一些成员类型定义。这些类型定义是为了使list能够与C++标准库的其他组件协同工作,并提供一些通用的标准接口。每个成员类型的用处: value_type : 这个成员类型代表list容器中存储的数据类型,即模板参数T的类型。 allocator_

    2024年02月12日
    浏览(31)
  • C++初阶之一篇文章让你掌握vector(模拟实现)

    模拟实现vector是为了深入理解和学习C++标准库中vector容器的工作原理和实现细节。 vector是C++标准库中最常用的容器之一,它提供了动态数组的功能,并且具有自动扩容和内存管理的特性,使得在使用时非常方便。 模拟实现vector有以下几个优点: 学习数据结构与算法 :实现

    2024年02月14日
    浏览(34)
  • 王者荣耀战区活跃度排名怎么实现的?这篇文章给你答案!

    🍉博客主页:阿博历练记 📖文章专栏:数据结构与算法 🚍代码仓库:阿博编程日记 🍥欢迎关注:欢迎友友们点赞收藏+关注哦🌹 堆的概念及结构: 堆的性质: 1.堆中某个节点的值总是 不大于 或 不小于 其 父节点 的值; 大堆:树中任何一个父亲都大于等于孩子。 小堆:树中

    2024年02月08日
    浏览(33)
  • C++初阶之一篇文章让你掌握string类(模拟实现)

    模拟实现 std::string 是一个有挑战性的练习,它可以带来多方面的收益,尤其对于学习 C++ 和深入了解字符串操作以及动态内存管理的机制。以下是模拟实现 std::string 的一些好处和重要意义: 学习 C++ 内存管理 :std::string 是一个动态分配内存的容器,模拟实现需要手动处理内

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包