0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【メタバース】その日私はQiitaのメタバース制作記事を更新してなかったので書く。#programming #Rust #metaverse

Posted at

黒歴史()

もはや黒歴史くらい内容の薄い過去のメタバース記事の続きです。

とはいえ今回も簡易的な3Dとウィンドウシステムのテストですが、体の調子がいいうちにアウトプットしてきます(苦笑)

今回の演目is...

今回やることは

  • electron(JS&C++?)からTauri(TS&Rust)への切り替え

  • ThreeJSの実質発展版であるBabylonJS(Typescript版)

の導入でごわす。

導入方法

前提知識

これからはRustの実行環境とマネージャー的なやつのcargoとかpnpmとかnodejsとかを導入済みとして進めていきます。
わかんない人はggって(大変)

んでpnpm create tauri-appしてもいいのですが、私は余分なファイルも持ってこられるのは個人的に(あくまで個人的に)嫌なので一度nextjs(Typescript)で事前に手動配置したものに以下の手順で導入

CLIツール導入
pnpm install --save-dev @tauri-apps/cli


Rustのコード生成
pnpm tauri init

これでsrc-tauriフォルダが生成され最小限の構成で始められます。

次にBabylonJSを導入します。もとはJSのライブラリですが、将来を見越して(?)TS版を導入しています。

pnpm install @babylonjs/core

以下簡易的なキューブ表示用ソース。


import { NextPage } from "next";
import * as BABYLON from "@babylonjs/core";
import { useRef, useEffect } from "react";
import style from '../styles/babylon.module.sass'

const Babylonjs: NextPage = () => {
    const ref = useRef(null);

    useEffect( () => {
        const renderCanvas = document.getElementById(
            "renderCanvas"
        ) as HTMLCanvasElement | null;

        const engine = new BABYLON.Engine(renderCanvas, true);
        const scene = new BABYLON.Scene(engine);


        scene.createDefaultCameraOrLight(true, true, true);

        scene.createDefaultEnvironment();

        const boxSize = 0.3;
        const box = BABYLON.MeshBuilder.CreateBox("box", { size: boxSize });

        box.position.addInPlaceFromFloats(0, boxSize / 2.0, 0);

        engine.runRenderLoop(() => {
            scene.render();
        });
    } )

    return (
        <canvas
            id="renderCanvas"
            className={style.Main}
            style={{ width: 700, height:700}}
            ref={ref}
        ></canvas>
    );
};

export default Babylonjs;

※サンプルなのであまり詳しく説明できないっす。すまそ。

ただ全体的にThreeJSのTS版もといNextJS版の延長線上な感じがします。

行数的には大体一緒ですが、ライブラリがすごい優秀なのでこれだけでマウスでぐりぐりしたりズームとかもできるようになっちゃいます。

いつもの()

以下のリポジトリで(ry

メタバースプラットフォーム開発者募集中!!!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?