Skip to content

Commit 38030ef

Browse files
ホーム画面に Babylon.js ランタイムを表示しました
1 parent 2444ab6 commit 38030ef

File tree

7 files changed

+149
-22
lines changed

7 files changed

+149
-22
lines changed

package-lock.json

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,10 @@
2626
"homepage": "https://github.com/babylon-js-jp-community/babylon-js-jp-community.github.io#readme",
2727
"devDependencies": {
2828
"vitepress": "^1.3.1"
29+
},
30+
"dependencies": {
31+
"@babylonjs/core": "^7.18.0",
32+
"@babylonjs/materials": "^7.18.0",
33+
"vue": "^3.4.35"
2934
}
30-
}
35+
}

tsconfig.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"compilerOptions": {
3+
"target": "ES2020",
4+
"useDefineForClassFields": true,
5+
"module": "ESNext",
6+
"lib": [
7+
"ESNext",
8+
"DOM",
9+
"DOM.Iterable"
10+
],
11+
"skipLibCheck": true,
12+
"moduleResolution": "Bundler",
13+
"allowImportingTsExtensions": true,
14+
"resolveJsonModule": true,
15+
"isolatedModules": true,
16+
"noEmit": true,
17+
"esModuleInterop": true,
18+
"experimentalDecorators": true,
19+
"strict": true,
20+
"noUnusedLocals": true,
21+
"noUnusedParameters": true
22+
}
23+
}

website/.vitepress/theme/HomeBox.vue

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<template>
2+
<canvas id="box" ref="container" touch-action="none" style="width: 100%; height: 320px;"></canvas>
3+
</template>
4+
5+
<style scoped>
6+
#box:focus-visible {
7+
outline: none;
8+
}
9+
</style>
10+
11+
<script lang="ts">
12+
import { defineComponent, onMounted, ref } from "vue";
13+
import { Engine } from "@babylonjs/core/Engines/engine";
14+
import { Scene } from "@babylonjs/core/scene";
15+
import { Color3, Color4 } from "@babylonjs/core/Maths/math.color";
16+
import { Vector3 } from "@babylonjs/core/Maths/math.vector";
17+
import { ArcRotateCamera } from "@babylonjs/core/Cameras/arcRotateCamera";
18+
import { MeshBuilder } from "@babylonjs/core/Meshes/meshBuilder";
19+
import { PointLight } from "@babylonjs/core/Lights/pointLight";
20+
import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial";
21+
22+
export default defineComponent({
23+
setup() {
24+
const container = ref();
25+
26+
function init() {
27+
if (container.value instanceof HTMLCanvasElement) {
28+
const engine = new Engine(container.value, true);
29+
const scene = new Scene(engine);
30+
scene.clearColor = new Color4(0, 0, 0, 0);
31+
const camera = new ArcRotateCamera("Camera", Math.PI / 4, Math.PI / 4, 3, Vector3.Zero(), scene);
32+
camera.attachControl(true);
33+
new PointLight("light", new Vector3(1, 1, 1), scene);
34+
35+
const box = MeshBuilder.CreateBox("Box", {}, scene);
36+
const boxMat = new StandardMaterial("BoxMat", scene);
37+
boxMat.diffuseColor = new Color3(0.2, 0.2, 1);
38+
box.material = boxMat;
39+
40+
engine.runRenderLoop(() => {
41+
box.rotation.y += 0.005;
42+
scene.render();
43+
});
44+
window.addEventListener("resize", () => {
45+
engine.resize();
46+
});
47+
}
48+
}
49+
50+
onMounted(() => {
51+
init();
52+
});
53+
54+
return {
55+
container,
56+
};
57+
}
58+
});
59+
</script>

website/.vitepress/theme/index.mts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { h } from "vue";
2+
import type { Theme } from "vitepress";
3+
import DefaultTheme from "vitepress/theme";
4+
import HomeBox from "./HomeBox.vue";
5+
6+
export default {
7+
extends: DefaultTheme,
8+
Layout() {
9+
return h(DefaultTheme.Layout, null, {
10+
"home-hero-info-before": () => h(HomeBox),
11+
});
12+
}
13+
} satisfies Theme;

website/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,3 @@ features:
2525
link: https://forum.babylonjs.com/
2626
details: 英語メインで活発な交流が行われています
2727
---
28-

website/injectBackground.mts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
function createBg() {
3+
if (!document.getElementsByClassName("is-home")) {
4+
// ホーム画面ではないので何もしない
5+
return;
6+
}
7+
if (document.getElementById("bg")) {
8+
// 既に DOM が存在するので何もしない
9+
return;
10+
}
11+
12+
const app = document.getElementById("VPContent");
13+
app.style.position = "relative";
14+
app.style.zIndex = 1000;
15+
16+
const bg = document.createElement("div");
17+
bg.id = "bg";
18+
bg.style.position = "absolute";
19+
bg.style.top = "0";
20+
bg.style.left = "0";
21+
bg.style.width = "100vw";
22+
bg.style.height = "100vh";
23+
bg.style.zIndex = -1000;
24+
bg.style.backgroundColor = "#eee";
25+
app.appendChild(bg);
26+
}
27+
28+
window.addEventListener("load", createBg);

0 commit comments

Comments
 (0)