mirror of
https://github.com/supabase/supabase.git
synced 2026-10-16 14:49:10 +03:00
stash changes
This commit is contained in:
1 parent
0a4168d6e9
commit
5cfe9e9068
5 files changed
+1492
-460
No files matched your search
@@ -68,9 +68,9 @@ const LwCanvas = ({ className }: { className?: string }) => {
|
||||
|
||||
// Load the ticket texture and create the actual ticket mesh
|
||||
// Replace this URL with your actual ticket texture
|
||||
const ticketTextureUrl = '/images/launchweek/14/ticket-test.png'
|
||||
const ticketScene = '/images/launchweek/14/ticket-supabase-positioned.gltf'
|
||||
|
||||
createTicketMesh(ticketTextureUrl, {
|
||||
createTicketMesh(ticketScene, {
|
||||
width: planeGeometrySize[0],
|
||||
height: planeGeometrySize[1],
|
||||
})
|
||||
|
||||
@@ -7,13 +7,15 @@ import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js'
|
||||
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'
|
||||
import { GlitchPass } from './glitch'
|
||||
import { CRTShader } from './crt-shader'
|
||||
import { FontLoader } from 'three/examples/jsm/loaders/FontLoader.js'
|
||||
import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry.js'
|
||||
|
||||
/**
|
||||
* Custom hook for managing requestAnimationFrame
|
||||
* Helper to simplifies controlling requestAnimationFrame
|
||||
* @param callback Animation callback function
|
||||
* @returns Object with start and stop functions
|
||||
*/
|
||||
export const useThreeAnimation = (callback: (time?: number) => void) => {
|
||||
export const createThreeAnimation = (callback: (time?: number) => void) => {
|
||||
const requestRef = { current: undefined } as { current: number | undefined }
|
||||
const previousTimeRef = { current: undefined } as { current: number | undefined }
|
||||
|
||||
@@ -47,7 +49,7 @@ export const useThreeAnimation = (callback: (time?: number) => void) => {
|
||||
export const createThreeSetup = (
|
||||
container: HTMLElement,
|
||||
options: {
|
||||
cameraPosition?: THREE.Vector3,
|
||||
cameraPosition?: THREE.Vector3
|
||||
postprocessing?: {
|
||||
bloom?: {
|
||||
enabled: boolean
|
||||
@@ -200,88 +202,114 @@ export const createTicketMesh = async (
|
||||
try {
|
||||
const width = options.width || 4
|
||||
const height = options.height || 2
|
||||
|
||||
|
||||
// Determine if we should use texture mode
|
||||
const useTextureMode = options.forceTextureMode ||
|
||||
!(source.endsWith('.glb') || source.endsWith('.gltf'))
|
||||
|
||||
const useTextureMode =
|
||||
options.forceTextureMode || !(source.endsWith('.glb') || source.endsWith('.gltf'))
|
||||
|
||||
if (!useTextureMode) {
|
||||
// Load the GLTF model
|
||||
const model = await loadGLTFModel(source)
|
||||
|
||||
|
||||
const namedObject = model.getObjectByName('planetName')
|
||||
|
||||
const boxHelper = new THREE.BoxHelper(namedObject, 0xff0000) // Red outline
|
||||
model.add(boxHelper) // Add to the model so it moves with it
|
||||
|
||||
const fontLoader = new FontLoader()
|
||||
|
||||
fontLoader.load('/images/launchweek/13/ticket/SourceCodePro_Regular.json', function (font) {
|
||||
const textGeometry = new TextGeometry('Earth', {
|
||||
font: font,
|
||||
size: 96,
|
||||
depth: 0.05,
|
||||
})
|
||||
|
||||
const textMaterial = new THREE.MeshBasicMaterial({ color: 0xffffff })
|
||||
const textMesh = new THREE.Mesh(textGeometry, textMaterial)
|
||||
|
||||
// Add text as child of your named object
|
||||
if (namedObject) namedObject.add(textMesh)
|
||||
else console.error('Named object not found')
|
||||
|
||||
// Position relative to parent
|
||||
textMesh.position.set(0, 0, 0.01) // Slight offset to avoid z-fighting
|
||||
})
|
||||
|
||||
// Calculate scale to fit the model within the specified width and height
|
||||
const box = new THREE.Box3().setFromObject(model)
|
||||
const size = box.getSize(new THREE.Vector3())
|
||||
|
||||
|
||||
// Calculate scale factors to fit the model within the specified dimensions
|
||||
const scaleX = width / size.x
|
||||
const scaleY = height / size.y
|
||||
const scale = Math.min(scaleX, scaleY)
|
||||
|
||||
|
||||
// Apply the scale
|
||||
model.scale.set(scale, scale, scale)
|
||||
|
||||
|
||||
// Center the model
|
||||
box.setFromObject(model)
|
||||
const center = box.getCenter(new THREE.Vector3())
|
||||
model.position.sub(center)
|
||||
|
||||
|
||||
// Only enhance emissive properties if explicitly requested
|
||||
// This respects the original GLTF materials by default
|
||||
if (options.enhanceEmissive) {
|
||||
model.traverse((child) => {
|
||||
if (child instanceof THREE.Mesh && child.material) {
|
||||
if (Array.isArray(child.material)) {
|
||||
child.material.forEach(mat => {
|
||||
child.material.forEach((mat) => {
|
||||
if (mat instanceof THREE.MeshStandardMaterial) {
|
||||
mat.emissive = options.materialOptions?.emissiveColor
|
||||
? new THREE.Color(options.materialOptions.emissiveColor)
|
||||
mat.emissive = options.materialOptions?.emissiveColor
|
||||
? new THREE.Color(options.materialOptions.emissiveColor)
|
||||
: new THREE.Color(0xffffff)
|
||||
mat.emissiveIntensity = options.materialOptions?.emissiveIntensity ?? 0.2
|
||||
}
|
||||
})
|
||||
} else if (child.material instanceof THREE.MeshStandardMaterial) {
|
||||
child.material.emissive = options.materialOptions?.emissiveColor
|
||||
? new THREE.Color(options.materialOptions.emissiveColor)
|
||||
child.material.emissive = options.materialOptions?.emissiveColor
|
||||
? new THREE.Color(options.materialOptions.emissiveColor)
|
||||
: new THREE.Color(0xffffff)
|
||||
child.material.emissiveIntensity = options.materialOptions?.emissiveIntensity ?? 0.2
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
return model
|
||||
} else {
|
||||
// Load as a texture
|
||||
const texture = await loadTexture(source)
|
||||
|
||||
|
||||
// Create a plane geometry for the ticket
|
||||
const geometry = new THREE.PlaneGeometry(width, height)
|
||||
|
||||
|
||||
// Create a material with the loaded texture
|
||||
const material = new THREE.MeshStandardMaterial({
|
||||
map: texture,
|
||||
transparent: options.materialOptions?.transparent !== undefined
|
||||
? options.materialOptions.transparent
|
||||
: true,
|
||||
transparent:
|
||||
options.materialOptions?.transparent !== undefined
|
||||
? options.materialOptions.transparent
|
||||
: true,
|
||||
side: THREE.DoubleSide,
|
||||
emissive: options.materialOptions?.emissiveColor
|
||||
? new THREE.Color(options.materialOptions.emissiveColor)
|
||||
emissive: options.materialOptions?.emissiveColor
|
||||
? new THREE.Color(options.materialOptions.emissiveColor)
|
||||
: new THREE.Color(0xffffff),
|
||||
emissiveIntensity: options.materialOptions?.emissiveIntensity ?? 0.2,
|
||||
color: options.materialOptions?.color
|
||||
? new THREE.Color(options.materialOptions.color)
|
||||
color: options.materialOptions?.color
|
||||
? new THREE.Color(options.materialOptions.color)
|
||||
: new THREE.Color(0xffffff),
|
||||
})
|
||||
|
||||
|
||||
// Create the mesh
|
||||
const mesh = new THREE.Mesh(geometry, material)
|
||||
|
||||
|
||||
return mesh
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error loading model/texture:', error)
|
||||
|
||||
|
||||
// Fallback to a simple plane with a default material if loading fails
|
||||
const geometry = new THREE.PlaneGeometry(options.width || 4, options.height || 2)
|
||||
const material = new THREE.MeshStandardMaterial({
|
||||
@@ -291,7 +319,7 @@ export const createTicketMesh = async (
|
||||
emissive: new THREE.Color(0xffffff),
|
||||
emissiveIntensity: 0.2,
|
||||
})
|
||||
|
||||
|
||||
return new THREE.Mesh(geometry, material)
|
||||
}
|
||||
}
|
||||
@@ -317,7 +345,7 @@ export const createTextureTicketMesh = async (
|
||||
): Promise<THREE.Mesh> => {
|
||||
return createTicketMesh(textureUrl, {
|
||||
...options,
|
||||
forceTextureMode: true
|
||||
forceTextureMode: true,
|
||||
}) as Promise<THREE.Mesh>
|
||||
}
|
||||
|
||||
@@ -327,26 +355,29 @@ export const createTextureTicketMesh = async (
|
||||
* @returns Object with containerRef
|
||||
*/
|
||||
export const useThreeJS = (
|
||||
setupCallback: (container: HTMLElement) => { cleanup: () => void; animate: (time?: number) => void }
|
||||
setupCallback: (container: HTMLElement) => {
|
||||
cleanup: () => void
|
||||
animate: (time?: number) => void
|
||||
}
|
||||
) => {
|
||||
const containerRef = useRef<HTMLDivElement>(null)
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
if (!containerRef.current) return
|
||||
|
||||
|
||||
const container = containerRef.current
|
||||
const { cleanup, animate } = setupCallback(container)
|
||||
|
||||
|
||||
// Set up animation loop
|
||||
const { start, stop } = useThreeAnimation(animate)
|
||||
const { start, stop } = createThreeAnimation(animate)
|
||||
start()
|
||||
|
||||
|
||||
// Cleanup on unmount
|
||||
return () => {
|
||||
stop()
|
||||
cleanup()
|
||||
}
|
||||
}, [setupCallback])
|
||||
|
||||
|
||||
return { containerRef }
|
||||
}
|
||||
Binary file not shown.
@@ -1,419 +0,0 @@
|
||||
{
|
||||
"asset": {
|
||||
"version": "2.0",
|
||||
"generator": "THREE.GLTFExporter"
|
||||
},
|
||||
"scenes": [
|
||||
{
|
||||
"nodes": [
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"scene": 0,
|
||||
"nodes": [
|
||||
{
|
||||
"children": [
|
||||
6
|
||||
],
|
||||
"matrix": [
|
||||
0.01,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0.01,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0.01,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"matrix": [
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"name": "Goszczu Text",
|
||||
"mesh": 0
|
||||
},
|
||||
{
|
||||
"name": "Goszczu Rectangle",
|
||||
"mesh": 1
|
||||
},
|
||||
{
|
||||
"name": "Goszczu Parent",
|
||||
"children": [
|
||||
1,
|
||||
2
|
||||
]
|
||||
},
|
||||
{
|
||||
"matrix": [
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
-6.123233995736766e-17,
|
||||
0,
|
||||
0,
|
||||
6.123233995736766e-17,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
6.123233995736766e-14,
|
||||
1000,
|
||||
1
|
||||
],
|
||||
"camera": 0
|
||||
},
|
||||
{
|
||||
"matrix": [
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"name": "Default Ambient Light"
|
||||
},
|
||||
{
|
||||
"name": "Scene 1",
|
||||
"children": [
|
||||
3,
|
||||
4,
|
||||
5
|
||||
]
|
||||
}
|
||||
],
|
||||
"bufferViews": [
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 0,
|
||||
"byteLength": 1920,
|
||||
"target": 34962,
|
||||
"byteStride": 12
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 1920,
|
||||
"byteLength": 1920,
|
||||
"target": 34962,
|
||||
"byteStride": 12
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 3840,
|
||||
"byteLength": 1280,
|
||||
"target": 34962,
|
||||
"byteStride": 8
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 5120,
|
||||
"byteLength": 852,
|
||||
"target": 34963
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 5972,
|
||||
"byteLength": 48,
|
||||
"target": 34962,
|
||||
"byteStride": 12
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 6020,
|
||||
"byteLength": 48,
|
||||
"target": 34962,
|
||||
"byteStride": 12
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 6068,
|
||||
"byteLength": 32,
|
||||
"target": 34962,
|
||||
"byteStride": 8
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteOffset": 6100,
|
||||
"byteLength": 24,
|
||||
"target": 34963
|
||||
}
|
||||
],
|
||||
"buffers": [
|
||||
{
|
||||
"byteLength": 6124,
|
||||
"uri": "data:application/octet-stream;base64,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/NQnQrBHvcAAAAAACIGZQQRW2cEAAAAACIGZQawct8EAAAAACIGZQajxMcIAAAAAwJ9kQUA1rr8AAAAAgJUaQgRW2cEAAAAAgJUaQqwct8EAAAAARDYpQvQoRMIAAAAARDYpQqjxMcIAAAAAwJ9kQfQoRMIAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAALine truncated
|
||||
}
|
||||
],
|
||||
"accessors": [
|
||||
{
|
||||
"bufferView": 0,
|
||||
"componentType": 5126,
|
||||
"count": 160,
|
||||
"max": [
|
||||
71.21400451660156,
|
||||
81.43899536132812,
|
||||
0
|
||||
],
|
||||
"min": [
|
||||
-147.44700622558594,
|
||||
-49.03999328613281,
|
||||
0
|
||||
],
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 1,
|
||||
"componentType": 5126,
|
||||
"count": 160,
|
||||
"max": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 2,
|
||||
"componentType": 5126,
|
||||
"count": 160,
|
||||
"max": [
|
||||
1,
|
||||
1
|
||||
],
|
||||
"min": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 3,
|
||||
"componentType": 5123,
|
||||
"count": 426,
|
||||
"max": [
|
||||
159
|
||||
],
|
||||
"min": [
|
||||
0
|
||||
],
|
||||
"type": "SCALAR"
|
||||
},
|
||||
{
|
||||
"bufferView": 4,
|
||||
"componentType": 5126,
|
||||
"count": 4,
|
||||
"max": [
|
||||
500,
|
||||
250,
|
||||
0
|
||||
],
|
||||
"min": [
|
||||
-500,
|
||||
-250,
|
||||
0
|
||||
],
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 5,
|
||||
"componentType": 5126,
|
||||
"count": 4,
|
||||
"max": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 6,
|
||||
"componentType": 5126,
|
||||
"count": 4,
|
||||
"max": [
|
||||
1,
|
||||
1
|
||||
],
|
||||
"min": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 7,
|
||||
"componentType": 5125,
|
||||
"count": 6,
|
||||
"max": [
|
||||
3
|
||||
],
|
||||
"min": [
|
||||
0
|
||||
],
|
||||
"type": "SCALAR"
|
||||
}
|
||||
],
|
||||
"meshes": [
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"mode": 4,
|
||||
"attributes": {
|
||||
"POSITION": 0,
|
||||
"NORMAL": 1,
|
||||
"TEXCOORD_0": 2
|
||||
},
|
||||
"extras": {
|
||||
"parameters": {
|
||||
"type": "TextGeometry",
|
||||
"width": 300,
|
||||
"height": 200,
|
||||
"depth": 0,
|
||||
"horizontalAlign": 1,
|
||||
"verticalAlign": 1,
|
||||
"fontSize": 69,
|
||||
"lineHeight": 1.2,
|
||||
"letterSpacing": 0,
|
||||
"text": {
|
||||
"textValue": "String value"
|
||||
},
|
||||
"textTransform": 2,
|
||||
"font": "22f65959-ceca-4326-b642-e764de5a1a2d",
|
||||
"editable": false,
|
||||
"extrudeBevelSize": 0,
|
||||
"extrudeBevelSegments": 1
|
||||
},
|
||||
"type": "TextGeometry"
|
||||
},
|
||||
"indices": 3
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"primitives": [
|
||||
{
|
||||
"mode": 4,
|
||||
"attributes": {
|
||||
"POSITION": 4,
|
||||
"NORMAL": 5,
|
||||
"TEXCOORD_0": 6
|
||||
},
|
||||
"extras": {
|
||||
"shape": {
|
||||
"points": [
|
||||
-500,
|
||||
250,
|
||||
-500,
|
||||
250,
|
||||
-500,
|
||||
250,
|
||||
0,
|
||||
500,
|
||||
250,
|
||||
500,
|
||||
250,
|
||||
500,
|
||||
250,
|
||||
0,
|
||||
500,
|
||||
-250,
|
||||
500,
|
||||
-250,
|
||||
500,
|
||||
-250,
|
||||
0,
|
||||
-500,
|
||||
-250,
|
||||
-500,
|
||||
-250,
|
||||
-500,
|
||||
-250,
|
||||
0
|
||||
],
|
||||
"shapeHoles": [],
|
||||
"isClosed": true,
|
||||
"roundness": 0
|
||||
},
|
||||
"parameters": {
|
||||
"width": 1000,
|
||||
"depth": 0,
|
||||
"cornerRadius": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"cornerType": 1,
|
||||
"extrudeBevelSize": 0,
|
||||
"extrudeBevelSegments": 1,
|
||||
"height": 500,
|
||||
"type": "RectangleGeometry"
|
||||
},
|
||||
"ui": {
|
||||
"enabledIndieCorners": false
|
||||
},
|
||||
"type": "RectangleGeometry"
|
||||
},
|
||||
"indices": 7
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"cameras": [
|
||||
{
|
||||
"type": "orthographic",
|
||||
"orthographic": {
|
||||
"xmag": 11.395488657638271,
|
||||
"ymag": 6.345900429716551,
|
||||
"zfar": 100000,
|
||||
"znear": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user