@mingo_zh/data-room-ui
Version:
45 lines (41 loc) • 2.08 kB
JavaScript
import * as BABYLON from 'babylonjs'
export function showAxis (scene, size) {
var makeTextPlane = function (text, color, size) {
var dynamicTexture = new BABYLON.DynamicTexture('DynamicTexture', 50, scene, true)
dynamicTexture.hasAlpha = true
dynamicTexture.drawText(text, 5, 40, 'bold 36px Arial', color, 'transparent', true)
var plane = new BABYLON.MeshBuilder.CreatePlane('TextPlane', { size: size }, scene)
plane.material = new BABYLON.StandardMaterial('TextPlaneMaterial', scene)
plane.material.backFaceCulling = false
plane.material.specularColor = new BABYLON.Color3(0, 0, 0)
plane.material.diffuseTexture = dynamicTexture
return plane
}
const axisX = BABYLON.MeshBuilder.CreateLines('axisX', {
points: [
new BABYLON.Vector3.Zero(), new BABYLON.Vector3(size, 0, 0), new BABYLON.Vector3(size * 0.95, 0.05 * size, 0),
new BABYLON.Vector3(size, 0, 0), new BABYLON.Vector3(size * 0.95, -0.05 * size, 0)
]
}, scene)
axisX.color = new BABYLON.Color3(1, 0, 0)
const xChar = makeTextPlane('X', 'red', size / 10)
xChar.position = new BABYLON.Vector3(0.9 * size, -0.05 * size, 0)
const axisY = BABYLON.MeshBuilder.CreateLines('axisY', {
points: [
new BABYLON.Vector3.Zero(), new BABYLON.Vector3(0, size, 0), new BABYLON.Vector3(-0.05 * size, size * 0.95, 0),
new BABYLON.Vector3(0, size, 0), new BABYLON.Vector3(0.05 * size, size * 0.95, 0)
]
}, scene)
axisY.color = new BABYLON.Color3(0, 1, 0);
const yChar = makeTextPlane('Y', 'green', size / 10)
yChar.position = new BABYLON.Vector3(0, 0.9 * size, -0.05 * size)
const axisZ = BABYLON.MeshBuilder.CreateLines('axisZ', {
points: [
new BABYLON.Vector3.Zero(), new BABYLON.Vector3(0, 0, size), new BABYLON.Vector3(0, -0.05 * size, size * 0.95),
new BABYLON.Vector3(0, 0, size), new BABYLON.Vector3(0, 0.05 * size, size * 0.95)
]
}, scene)
axisZ.color = new BABYLON.Color3(0, 0, 1)
const zChar = makeTextPlane('Z', 'blue', size / 10)
zChar.position = new BABYLON.Vector3(0, 0.05 * size, 0.9 * size)
}