From e60526ff19ccdd19f8c8f367e79aee4c1a68602f Mon Sep 17 00:00:00 2001 From: CJSatnarine Date: Fri, 10 Oct 2025 19:37:58 -0400 Subject: [PATCH] fixed movement and added gltf --- static/secrets/test.bin | Bin 0 -> 69700 bytes static/secrets/test.gltf | 324 +++++++++++++++++++++++++++++++++++++++ static/secrets/woof.js | 99 ++++++++---- 3 files changed, 391 insertions(+), 32 deletions(-) create mode 100644 static/secrets/test.bin create mode 100644 static/secrets/test.gltf diff --git a/static/secrets/test.bin b/static/secrets/test.bin new file mode 100644 index 0000000000000000000000000000000000000000..1b8e802534ffaa5d7f9e08c6cab07e35265a9729 GIT binary patch literal 69700 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 literal 0 HcmV?d00001 diff --git a/static/secrets/test.gltf b/static/secrets/test.gltf new file mode 100644 index 0000000..c37d379 --- /dev/null +++ b/static/secrets/test.gltf @@ -0,0 +1,324 @@ +{ + "asset":{ + "generator":"Khronos glTF Blender I/O v4.5.48", + "version":"2.0" + }, + "scene":0, + "scenes":[ + { + "name":"Scene", + "nodes":[ + 0, + 1, + 2 + ] + } + ], + "nodes":[ + { + "mesh":0, + "name":"Plane", + "scale":[ + 25, + 25, + 25 + ] + }, + { + "mesh":1, + "name":"Cube", + "translation":[ + 0, + 1, + 2.458730936050415 + ] + }, + { + "mesh":2, + "name":"Suzanne", + "rotation":[ + 0.08822915703058243, + -0.27138662338256836, + 0.0949493795633316, + 0.9537031054496765 + ], + "translation":[ + 6.071174144744873, + 2.417121171951294, + 0 + ] + } + ], + "materials":[ + { + "doubleSided":true, + "name":"Ground", + "pbrMetallicRoughness":{ + "baseColorFactor":[ + 0.37110745906829834, + 0.39915257692337036, + 0.364591121673584, + 1 + ], + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "doubleSided":true, + "name":"Cube", + "pbrMetallicRoughness":{ + "baseColorFactor":[ + 0.8000937700271606, + 0.00807161070406437, + 0.025698840618133545, + 1 + ], + "metallicFactor":0, + "roughnessFactor":0.5 + } + }, + { + "doubleSided":true, + "name":"Monkey", + "pbrMetallicRoughness":{ + "baseColorFactor":[ + 0.12672929465770721, + 0.03563183546066284, + 0.8001565933227539, + 1 + ], + "metallicFactor":0, + "roughnessFactor":0.5 + } + } + ], + "meshes":[ + { + "name":"Plane", + "primitives":[ + { + "attributes":{ + "POSITION":0, + "NORMAL":1, + "TEXCOORD_0":2 + }, + "indices":3, + "material":0 + } + ] + }, + { + "name":"Cube.001", + "primitives":[ + { + "attributes":{ + "POSITION":4, + "NORMAL":5, + "TEXCOORD_0":6 + }, + "indices":7, + "material":1 + } + ] + }, + { + "name":"Suzanne", + "primitives":[ + { + "attributes":{ + "POSITION":8, + "NORMAL":9, + "TEXCOORD_0":10 + }, + "indices":11, + "material":2 + } + ] + } + ], + "accessors":[ + { + "bufferView":0, + "componentType":5126, + "count":4, + "max":[ + 1, + 0, + 1 + ], + "min":[ + -1, + 0, + -1 + ], + "type":"VEC3" + }, + { + "bufferView":1, + "componentType":5126, + "count":4, + "type":"VEC3" + }, + { + "bufferView":2, + "componentType":5126, + "count":4, + "type":"VEC2" + }, + { + "bufferView":3, + "componentType":5123, + "count":6, + "type":"SCALAR" + }, + { + "bufferView":4, + "componentType":5126, + "count":24, + "max":[ + 1, + 1, + 1 + ], + "min":[ + -1, + -1, + -1 + ], + "type":"VEC3" + }, + { + "bufferView":5, + "componentType":5126, + "count":24, + "type":"VEC3" + }, + { + "bufferView":6, + "componentType":5126, + "count":24, + "type":"VEC2" + }, + { + "bufferView":7, + "componentType":5123, + "count":36, + "type":"SCALAR" + }, + { + "bufferView":8, + "componentType":5126, + "count":1966, + "max":[ + 1.3671875, + 0.984375, + 0.8515625 + ], + "min":[ + -1.3671875, + -0.984375, + -0.8515625 + ], + "type":"VEC3" + }, + { + "bufferView":9, + "componentType":5126, + "count":1966, + "type":"VEC3" + }, + { + "bufferView":10, + "componentType":5126, + "count":1966, + "type":"VEC2" + }, + { + "bufferView":11, + "componentType":5123, + "count":2904, + "type":"SCALAR" + } + ], + "bufferViews":[ + { + "buffer":0, + "byteLength":48, + "byteOffset":0, + "target":34962 + }, + { + "buffer":0, + "byteLength":48, + "byteOffset":48, + "target":34962 + }, + { + "buffer":0, + "byteLength":32, + "byteOffset":96, + "target":34962 + }, + { + "buffer":0, + "byteLength":12, + "byteOffset":128, + "target":34963 + }, + { + "buffer":0, + "byteLength":288, + "byteOffset":140, + "target":34962 + }, + { + "buffer":0, + "byteLength":288, + "byteOffset":428, + "target":34962 + }, + { + "buffer":0, + "byteLength":192, + "byteOffset":716, + "target":34962 + }, + { + "buffer":0, + "byteLength":72, + "byteOffset":908, + "target":34963 + }, + { + "buffer":0, + "byteLength":23592, + "byteOffset":980, + "target":34962 + }, + { + "buffer":0, + "byteLength":23592, + "byteOffset":24572, + "target":34962 + }, + { + "buffer":0, + "byteLength":15728, + "byteOffset":48164, + "target":34962 + }, + { + "buffer":0, + "byteLength":5808, + "byteOffset":63892, + "target":34963 + } + ], + "buffers":[ + { + "byteLength":69700, + "uri":"test.bin" + } + ] +} diff --git a/static/secrets/woof.js b/static/secrets/woof.js index 03b749e..cb90432 100644 --- a/static/secrets/woof.js +++ b/static/secrets/woof.js @@ -1,45 +1,80 @@ import * as THREE from 'three'; -import { FirstPersonControls } from 'three/addons/controls/FirstPersonControls.js'; +import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; +import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js'; -// Setup stuff +// Variables +const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector('#kennel'), }); +const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000); +const light = new THREE.HemisphereLight(0xeeeeff, 0x777788, 2.5); +const controls = new PointerLockControls(camera, renderer.domElement); const scene = new THREE.Scene(); -//const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); -//camera.position.z = 5; -let camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000); -camera.position.z = 5; +const clock = new THREE.Clock(); +const loader = new GLTFLoader(); +const keyMap = {} -const renderer = new THREE.WebGLRenderer({ - canvas: document.querySelector('#kennel'), -}); +init(); -renderer.setSize(window.innerWidth, window.innerHeight); +//Initialisation +function init() { + // Renderer + renderer.setSize(window.innerWidth, window.innerHeight); -// Cube geometry stuff. -const geometry = new THREE.BoxGeometry(5, 1, 1); -const material = new THREE.MeshBasicMaterial({ color: 0x962FFE }); -const material2 = new THREE.MeshBasicMaterial({ color: 0x00FF00 }); -const cube = new THREE.Mesh(geometry, material); -const cube2 = new THREE.Mesh(geometry, material2); -cube2.position.x = 4; -cube2.position.z = 7; -cube2.rotateX = 35; -scene.add(cube); -scene.add(cube2); + // Camera + camera.position.z = 5; -// Light stuff -const light = new THREE.DirectionalLight(0xFFFFFF, 0.5); -light.position.x = 5; -scene.add(light); + // Light + light.position.set(0.5, 1, 0.75); + scene.add(light); -// Controller stuff -let clock = new THREE.Clock(); -let controls = new FirstPersonControls(camera, renderer.domElement); -controls.movementSpeed = 5; -controls.lookSpeed = 0.1; -controls.lookVertical = false; + // Scene + scene.background = new THREE.Color(0x000000); + + // Controller + document.addEventListener('click', () => { + controls.lock(); + }); + + const onDocumentKey = (e) => { + keyMap[e.code] = e.type === 'keydown'; + }; + document.addEventListener('keydown', onDocumentKey, false); + document.addEventListener('keyup', onDocumentKey, false); + + // GLFT Loader + loader.load( + // url of file + '../test.gltf', + // when resource is loaded + function(gltf) { + scene.add(gltf.scene); + + gltf.animations; + gltf.scene; + gltf.scenes; + gltf.cameras; + gltf.asset; + }, + //when loading is progressing + function(xhr) { + console.log((xhr.loaded / xhr.total * 100) + '% loaded'); + }, + // when error + function(error) { + console.log('a fucking error lmao: ', error); + } + ); +} function animate() { - controls.update(clock.getDelta()); + const delta = clock.getDelta(); + + if (controls.isLocked) { + if (keyMap['KeyW']) controls.moveForward(delta * 5); + if (keyMap['KeyS']) controls.moveForward(-delta * 5); + if (keyMap['KeyA']) controls.moveRight(-delta * 5); + if (keyMap['KeyD']) controls.moveRight(delta * 5); + } + renderer.render(scene, camera); } renderer.setAnimationLoop(animate);