学习babylon.js --- [2] 项目工程搭建

这篇具有很好参考价值的文章主要介绍了学习babylon.js --- [2] 项目工程搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文讲述如何搭建babylonjs的项目工程。


一 准备

首先创建一个目录叫MyProject,然后在这个目录里再创建三个目录:dist,public和src,如下,
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言
接着在src目录里添加一个文件叫app.ts,本文使用typescript;在public目录下添加index.html,index.html内容如下,

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Babylon Tutorial</title>
        <style>
            html, body {
                overflow: hidden;
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
            }
        </style>
    </head>
    <body>
    </body>
</html>

最后回到MyProject目录下执行下面命令来产生package.json,

npm init

一路回车就行了。

由于本文使用typescript,所以在MyProject目录下还要执行下面的命令,

tsc --init

执行完后会产生tsconfig.json,打开这个文件然后替换成以下内容,

{
  "compilerOptions": {
    "target": "es6",
    "module": "ESNext",
    "moduleResolution": "node",
    "noResolve": false,
    "noImplicitAny": false,
    "sourceMap": true,
    "preserveConstEnums":true,
    "lib": [
        "dom",
        "es6"
    ],
    "rootDir": "src"
  }
}

注意其中的"rootDir",其值是我们的src目录。

最后形成的目录如下,
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言


二 安装webpack并配置

webpack是现代JavaScript 应用程序的静态模块打包工具,方便我们发布程序。在MyProject目录下,使用以下命令进行安装,

npm install --save-dev webpack ts-loader webpack-cli

另外再安装2个插件,如下,

npm install --save-dev html-webpack-plugin
npm install --save-dev webpack-dev-server

在运行程序后,如果有修改,这2个插件可以让程序自动更新,便于调试。

安装完毕之后,在MyProject目录下创建webpack.config.js,内容如下,

const path = require("path");
const fs = require("fs");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const appDirectory = fs.realpathSync(process.cwd());

module.exports = {
    entry: path.resolve(appDirectory, "src/app.ts"), //path to the main.ts file
    output: {
        filename: "js/bundleName.js", //name for the js file that is created/compiled in memory
        clean: true,
    },
    resolve: {
        extensions: [".tsx", ".ts", ".js"],
    },
    devServer: {
        host: "0.0.0.0",
        port: 8080, //port that we're using for local host (localhost:8080)
        static: path.resolve(appDirectory, "public"), //tells webpack to serve from the public folder
        hot: true,
        devMiddleware: {
            publicPath: "/",
        }
    },
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: "ts-loader",
                exclude: /node_modules/,
            },
        ],
    },
    plugins: [
        new HtmlWebpackPlugin({
            inject: true,
            template: path.resolve(appDirectory, "public/index.html"),
        })
    ],
    mode: "development",
};

第3行引入了html-webpack-plugin,就是刚才安装的插件之一,然后来看下module.exports,

  • entry指定了要执行的ts文件,这里是src/app.ts
  • output里的filename用于指定app.ts经过tsc编译后产生的js文件名,这里是bundleName.js,位置是js目录,而js目录是位于dist目录下,到时会自动创建
  • devServer指定了程序运行后的服务器地址,这里是localhost:8080,"static"是指服务器的运行起始目录,这里是public目录,可以让服务器加载静态文件
  • plugins里创建HtmlWebpackPlugin的对象,其template参数指向public/index.html

HTML Webpack插件可以把打包好的js文件注入到dist目录下的index.html里。


三 安装babylonjs

可以参考第一篇文章第二节,按照需要的方式来安装。注意要在项目根目录下进行安装,即MyProject,这里使用ES6方式来安装,

npm install @babylonjs/core

安装完之后使用npm list来查看当前工程下安装的package,
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言
注意这些package都是在当前工程下有效,不是全局安装的。如果需要全局安装,需要自行设置下。


四 准备app.ts

这里推荐使用VS Code来打开MyProject目录,然后把以下内容拷贝进去,

import * as BABYLON from "@babylonjs/core"

class App {
    constructor() {
        // create the canvas html element and attach it to the webpage
        var canvas = document.createElement("canvas");
        canvas.style.width = "100%";
        canvas.style.height = "100%";
        canvas.id = "gameCanvas";
        document.body.appendChild(canvas);

        // initialize babylon scene and engine
        var engine = new BABYLON.Engine(canvas, true);
        var scene = new BABYLON.Scene(engine);

        var camera: BABYLON.ArcRotateCamera = new BABYLON.ArcRotateCamera("Camera", Math.PI / 2, Math.PI / 2, 2, BABYLON.Vector3.Zero(), scene);
        camera.attachControl(canvas, true);
        var light1: BABYLON.HemisphericLight = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(1, 1, 0), scene);
        var sphere: BABYLON.Mesh = BABYLON.MeshBuilder.CreateSphere("sphere", { diameter: 1 }, scene);

        // hide/show the Inspector
        window.addEventListener("keydown", (ev) => {
            // Shift+Ctrl+Alt+I
            if (ev.shiftKey && ev.ctrlKey && ev.altKey && ev.key === 'i') {
                if (scene.debugLayer.isVisible()) {
                    scene.debugLayer.hide();
                } else {
                    scene.debugLayer.show();
                }
            }
        });

        // run the main render loop
        engine.runRenderLoop(() => {
            scene.render();
        });
    }
}
new App();

五 打包项目并运行

打开package.json,找到"scripts",如下,
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言

然后替换成如下语句,

"scripts": {
        "build": "webpack",
        "start": "webpack-dev-server --port 8080"
    },

接着构建并运行server,执行以下2个命令即可,

npm run build
npm run start

执行过程如下,
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言
最后打开浏览器,地址栏输入127.0.0.1:8080并回车,可以看到如下效果,鼠标左键按着不放然后移动,可以看到变化
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言

此时打开dist目录,可以看到生成的文件符合之前的设置,
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言
打开index.html,可以看到其引入了生成的bundleName.js
学习babylon.js --- [2] 项目工程搭建,babylon.js,学习,javascript,开发语言


六 总结

本文讲述了如何搭建babylonjs的项目工程,也是参考的官方文档,略有改动。文章来源地址https://www.toymoban.com/news/detail-584665.html

到了这里,关于学习babylon.js --- [2] 项目工程搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STM32开发环境搭建&工程创建(嵌入式学习)

    简介 STM32CubeMX是STMicroelectronics公司提供的一款集成开发环境(IDE)工具,用于快速配置和初始化STM32微控制器系列的软件工程。它提供了图形化界面和交互式工具,使开发者能够轻松地生成STM32微控制器的初始化代码和配置文件。 STM32CubeMX具有以下主要功能和特点: 微控制器

    2024年02月11日
    浏览(74)
  • 【Node.js】一文带你开发博客项目之接口(处理请求、搭建开发环境、开发路由)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端 📃 个人状态: 在校大学生一枚,已拿 offer(秋招) 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2Vue3项目实战 🥝Node.js 内容 参考链接 Node.js(一) 初识 Node.js DNS 解析,建

    2023年04月21日
    浏览(55)
  • Babylon.js入门教程:探索3D世界的新维度

    随着3D技术的不断发展,越来越多的开发者开始涉足3D领域。在这个领域中,Three.js和Babylon.js是最受欢迎的两个框架。本文将为大家介绍Babylon.js的入门教程,并与Three.js进行对比,探讨它们的优缺点。 一、Babylon.js简介 Babylon.js是一个基于WebGL的开源3D游戏引擎,它可以在浏览器

    2024年02月13日
    浏览(41)
  • 【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(7)特征工程的基本方法

    今天来学习特征工程的基本方法。 基本方法包括:特征选择(Feature Selection)、特征提取(Feature Extraction)和特征构建(Feature Construction)。 从给定的特征集合中选出相关特征子集的过程。 去除无关特征,降低特征学习难度,让模型简单,降低计算复杂度。 抛弃这部分特征

    2024年02月22日
    浏览(48)
  • itheima苍穹外卖项目学习笔记--Day1:项目介绍与开发环境搭建

    (1). 前端环境搭建 前端工程基于 nginx 运行 启动nginx:双击 nginx.exe 即可启动 nginx 服务,访问端口号为 80 (2). 后端环境搭建 后端工程基于 maven 进行项目构建,并且进行分模块开发 (3). 前后端联调 修改数据库中明文密码,改为MD5加密后的密文 修改Java代码,前端提交的密码进行

    2024年02月15日
    浏览(38)
  • C语言学习1--------Visual Studio集成开发环境的搭建

    建议初学者适用最新的——Visual Studio 2019为集成开发环境。 部分学校可能正在适用——VC++6.0,全称是Visual C++6.0。在当今的角度来看,VC++6.0已经比较古老,几乎没有公司会以VC++6.0作为开发环境进行开发了。 可能有些人认为Visual Studio太过庞大,并且项目组织较为复杂,不太适

    2024年02月08日
    浏览(57)
  • 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用

    🐚 作者: 阿伟 💂 个人主页: Flyme awei 🐋 希望大家多多支持😘一起进步呀! 💬 文章对你有帮助👉关注✨点赞👍收藏📂 第一种: var 数组名 = new Array(); 创建一个空数组 第二种: var arr2 = new Array(10); 创建一个定长为10的数组 第三种 var arr3 = new Array(a,b,c); 创建时直接指定元素值

    2023年04月08日
    浏览(65)
  • 软件工程师,学习下JavaScript ES6新特性吧

    概述         作为一名软件工程师,不管你是不是前端开发的岗位,工作中或多或少都会用到一点JavaScript。JavaScript是大家所了解的语言名称,但是这个语言名称是Oracle公司注册的商标。JavaScript的正式名称是ECMAScript。1996年11月,JavaScript的创造者网景公司将JS提交给国际化

    2024年02月13日
    浏览(47)
  • 【Anime.js】——JavaScript动画库:Anime.js——学习笔记

    目录 一、搭建开发环境  二、基本功能和使用 开始制作动画 动画属性 三、anime.stagger——交错动画 四、timeline——时间轴  五、控制、回调与助手 一、控制  二、回调 三、助手 六、easings——动画运动曲线 七、SVG动画 官网定义: anime.js 是一个简便的JS动画库,用法简单而

    2024年02月01日
    浏览(44)
  • C/C++|物联网开发入门+项目实战|指针|嵌入式C语言高级|C语言内存空间的使用-学习笔记(9)

    参考: 麦子学院-嵌入式C语言高级-内存空间 内存类型资源地址、门牌号的代名词 指针:地址的代名词 指针变量:存放指针这个概念的盒子 *P char *p *p; C语言娟译器对指针这个特殊的概念,有2个疑问? 1、分配一个盒子,盒子要多大? 在32bit系统中,指针就4个字节 2、盘子里存放

    2023年04月22日
    浏览(70)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包