Compare commits
4 Commits
43e45e6c59
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
feddbf7d6d | ||
|
|
1513d449a2 | ||
|
|
66122eb1c7 | ||
|
|
7fbddfddca |
@@ -2,9 +2,9 @@
|
||||
template = "index.html"
|
||||
title = "CJ Satnarine"
|
||||
+++
|
||||
:construction: Don't mind the mess, the site's still under construction and is undergoing a lot of changes. A lot of projects are missing and will be added soon. :construction:
|
||||
:construction: Don't mind the mess, the site's still under construction and is undergoing a lot of changes. A lot of projects are missing and will be added soon. :construction:
|
||||
|
||||
Hey! My name is CJ, and welcome to my little space on the internet. I just share whatever I feel like here. I'm into a lot of things, from 3D animation and code to history and language. You can find out more in my [about me](@/about_me/_index.md).
|
||||
Hey! My name is CJ, and welcome to my little space on the internet. I just share whatever I feel like here. I'm into a lot of things, from 3D animation and code to history and language.
|
||||
|
||||
Alright, enjoy looking around. Feel free to [reach out to me](@/contact/_index.md).
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@ template = "index.html"
|
||||
title = "About Me"
|
||||
+++
|
||||
|
||||
Hey, I'm CJ! I'm an aspiring graphics programmer/techincal artist/game developer from Waterloo, Ontario, Canada. I like coding and art and animation and walking and computers and languages and chasing my cat in the dark and reading and music. I haven't drank any caffeined beverages since 2022.
|
||||
Hey, I'm CJ! I'm an aspiring graphics programmer/technical artist/game developer from Waterloo, Ontario, Canada. I haven't drunk any caffeined beverages since 2022.
|
||||
|
||||
> I do not use generative AI in any of my work, and I do not intend to.
|
||||
|
||||
## History
|
||||
In 2021, I stumbled across Blender, and I spent my last two years in highschool playing around with the software. I had fallen in love with 3D animation at this point. I also played around with Unity, and took mostly coding and computer classes around this time. At some point, I took all the classes that were technology related. In 2023, I of course enrolled into software engineering in post-secondary school. Yikes. Spent a year through that and dropped out after realising it wasn't my cup of tea. It was through this experience, however, I realised I could combine my love for graphics and programming with, wait for it, :sparkles: ***graphics programming*** :sparkles:.
|
||||
Growing up in the Caribbean exposed me to different cultures, and I believe that exposure started an interest in social studies, history, and languages.
|
||||
|
||||
During that software engineering schooling experience, I took an anthropology elective that really reöpened my interest in a lot of topics under that umbrella, most specifically languages (more info in [here](@/projects/language_stuff/_index.md)). In primary and secondary school, I had an interest in social studies and history, and now I study those topics on my own.
|
||||
My introduction to animation coincided with my introduction to computers and programming in highschool. I would have envisioned myself a game developer or some sort of programmer as I was graduating highschool, so I pursued Software Engineering. Turned out I didn't like the idea of being a software engineer, so I dropped out. During that time, I took an anthropology elective which reintroduce my interest in the humanities.
|
||||
|
||||
Nowadays I'm trying to get back into 3D animation and game development, while trying to self-study and occasionally refurbishing computers.
|
||||
|
||||
## Stuff I use:
|
||||
## Software I use:
|
||||
- Blender (<span class="special">i wuv bwendew</span> )
|
||||
- Godot (started using in 2025 to replace Unity)
|
||||
- GIMP
|
||||
@@ -22,6 +22,6 @@ Nowadays I'm trying to get back into 3D animation and game development, while tr
|
||||
- i use arch btw
|
||||
- Neovim (code and text editor)
|
||||
- Obsidian (note taking)
|
||||
- fooyin (started using it in mid-January of 2026 instead of Spotify)
|
||||
- fooyin (music listening)
|
||||
- Foliate (for e-book reading)
|
||||
- Helium Browser (replaced Brave browser)
|
||||
- Helium Browser
|
||||
|
||||
@@ -7,16 +7,12 @@ title = "Contact me"
|
||||
|
||||
E-mail: `cjsatnarine@protonmail.com`
|
||||
|
||||
Matrix: [@just_cj:matrix.org](https://matrix.to/#/@just_cj:matrix.org)
|
||||
|
||||
### You can find my stuff (when I eventually post) on:
|
||||
|
||||
Gitea: <a href="https://git.cjsatnarine.space">git.cjsatnarine.space</a>
|
||||
|
||||
Mastodon: <a rel="me" href="https://woof.tech/@just_cj">@just_cj</a>
|
||||
|
||||
Tumblr: <a href="https://justcjart.tumblr.com/">justcjart</a>
|
||||
|
||||
YouTube: <a href="https://www.youtube.com/@CJSatnarine">CJSatnarine</a>
|
||||
|
||||
ArtStation: <a href="https://www.artstation.com/cjsatnarine">cjsatnarine</a>
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
+++
|
||||
template = "secrets.html"
|
||||
page_template = "projects-page.html"
|
||||
title = "Secrets"
|
||||
+++
|
||||
what the fuck is this place??
|
||||
@@ -1,7 +0,0 @@
|
||||
+++
|
||||
title = "The Forest"
|
||||
+++
|
||||
The forest is growing, come back another time.
|
||||
|
||||
###### (I forgot to create the forest)
|
||||
<canvas id="forest"/>
|
||||
@@ -1,4 +0,0 @@
|
||||
+++
|
||||
title = "The Kennel"
|
||||
+++
|
||||
<canvas id="kennel"/>
|
||||
@@ -3,44 +3,15 @@ template = "index.html"
|
||||
title = "Stuff I Like"
|
||||
+++
|
||||
|
||||
## Food
|
||||
- *Bánh mì* is my favourite food right now
|
||||
- *Shawarma poutine*
|
||||
- *Bangers and Mash*
|
||||
- *Mayo and bread with lettuce to feel fancy*
|
||||
- *Veggie Springrolls*
|
||||
- *Fish and Chips*
|
||||
- *Chicken Pineapple pizza with mayo as a dip*
|
||||
- *Diet/Sugar free Ginger Ale*
|
||||
- *Chow mein*
|
||||
- *Lo mein*
|
||||
- You can always bribe me with *Dark chocolate mint thins* or those *Scottish caramel chocolate wafers* I forgot the name of
|
||||
|
||||
## Music
|
||||
This is in no way all of my favourite artists, there are too many to list. These are just the ones I really enjoy and don't mind sharing (in no particular order):
|
||||
|
||||
- *FIBEL*
|
||||
- *HARBOUR*
|
||||
- *Provinz*: I just listened to them a lot when I was learning German.
|
||||
- *Molchat Doma*
|
||||
- *LOOK MUM NO COMPUTER*
|
||||
- *DOUBLECAMP*
|
||||
- *SOFFIE*
|
||||
- *AJR*
|
||||
- *Emil Kárlsen*: I really enjoyed his song Muohta and the album Nagirvárrái.
|
||||
- *Dorian Concept*
|
||||
- *tomcbumpz*
|
||||
- *Pogo*
|
||||
- *anaïs*
|
||||
- *Home*
|
||||
- *Nanook*: I really like their song Ingerlaliinnaleqaagut.
|
||||
- *Paysage D'Hiver*
|
||||
## Films and Animations
|
||||
- *The Seventh Seal/Det Sjunde Inseglet* (1957, Ingmar Bergman)
|
||||
- *Godland/Volaða Land* (2022, Hlynur Pálmason)
|
||||
- *Bob* (by [InfinityBurrito](https://www.youtube.com/@infinityburrito5299/featured))
|
||||
- *The Transformers* (1984-1987)
|
||||
- *Ivan's Childhood* (1962, Andrei Tarkovsky)
|
||||
- *The Tragedy of Man* (2011, Marcell Jankovics)
|
||||
- *Andor* (2022-2025, Tony Gilroy)
|
||||
|
||||
## Games
|
||||
I'm not really a gamer but these are some stuff I liked:
|
||||
- *Navicula Meatus*
|
||||
@@ -48,3 +19,10 @@ I'm not really a gamer but these are some stuff I liked:
|
||||
- *Viewfinder*
|
||||
- *Sable*
|
||||
- *Plants vs. Zombies*
|
||||
- *Critters for Sale*
|
||||
- *Moon Hunters*
|
||||
- *Felvidek*
|
||||
- *s.p.l.i.t*
|
||||
- *Lost Wiki*
|
||||
- *Unsorted Horror*
|
||||
- *Pager*
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
@use "colours";
|
||||
|
||||
body {
|
||||
background-color: colours.$background;
|
||||
font-family: 'Roboto Mono';
|
||||
@@ -70,6 +69,10 @@ strong {
|
||||
color: colours.$blockquote;
|
||||
}
|
||||
|
||||
img {
|
||||
padding-left: 0%;
|
||||
}
|
||||
|
||||
hr {
|
||||
background: linear-gradient(to right, colours.$h1, colours.$periwinkle, colours.$h1, colours.$periwinkle, colours.$h1);
|
||||
height: 5px;
|
||||
@@ -127,3 +130,4 @@ p {
|
||||
#statuscafe-content {
|
||||
margin: 0 1em 0.5em 1em;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
import * as THREE from 'three';
|
||||
import { OBJLoader } from 'three/addons/loaders/OBJLoader.js';
|
||||
|
||||
const renderer = new THREE.WebGLRenderer({ canvas: document.querySelector('#forest'), });
|
||||
const scene = new THREE.Scene();
|
||||
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
|
||||
let modelObject = new THREE.Object3D;
|
||||
|
||||
renderer.setSize( window.innerWidth, window.innerHeight );
|
||||
renderer.setAnimationLoop( animate );
|
||||
|
||||
camera.position.z = 5;
|
||||
|
||||
// OBJ loader.
|
||||
const objectLoader = new OBJLoader();
|
||||
objectLoader.load(
|
||||
"/../../wolf_head/wolf_head.obj",
|
||||
function(object) {
|
||||
console.log(object);
|
||||
modelObject = object;
|
||||
object.traverse((child) => {
|
||||
// instance of is apparently the reason god made typescript
|
||||
if (child instanceof THREE.Mesh) {
|
||||
// Create material for the mesh.
|
||||
child.material = new THREE.MeshStandardMaterial({ color: 0x962FFE });
|
||||
child.material.wireframe = true;
|
||||
child.material.wireframeLinewidth = 1;
|
||||
child.material.emissive = (new THREE.Color().setHex(0xff3030));
|
||||
}
|
||||
});
|
||||
|
||||
scene.add(object);
|
||||
},
|
||||
function(xhr) {
|
||||
console.log((xhr.loaded / xhr.total * 100) + '% loaded');
|
||||
},
|
||||
function(error) {
|
||||
console.log('an error happened', error);
|
||||
}
|
||||
);
|
||||
|
||||
function animate() {
|
||||
|
||||
modelObject.rotation.x += 0.01;
|
||||
modelObject.rotation.y += 0.01;
|
||||
|
||||
renderer.render( scene, camera );
|
||||
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
@@ -1,324 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -1,420 +0,0 @@
|
||||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v4.5.49",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3
|
||||
]
|
||||
}
|
||||
],
|
||||
"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
|
||||
]
|
||||
},
|
||||
{
|
||||
"mesh":3,
|
||||
"name":"Icosphere",
|
||||
"translation":[
|
||||
-2.5536391735076904,
|
||||
2.877737522125244,
|
||||
-0.012781083583831787
|
||||
]
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
},
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Material",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorFactor":[
|
||||
0.13890013098716736,
|
||||
0.8004242181777954,
|
||||
0.06036654859781265,
|
||||
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
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name":"Icosphere",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"POSITION":12,
|
||||
"NORMAL":13,
|
||||
"TEXCOORD_0":14
|
||||
},
|
||||
"indices":15,
|
||||
"material":3
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"bufferView":12,
|
||||
"componentType":5126,
|
||||
"count":240,
|
||||
"max":[
|
||||
0.9510578513145447,
|
||||
1,
|
||||
0.9999999403953552
|
||||
],
|
||||
"min":[
|
||||
-0.9510578513145447,
|
||||
-1,
|
||||
-0.9999999403953552
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":13,
|
||||
"componentType":5126,
|
||||
"count":240,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":14,
|
||||
"componentType":5126,
|
||||
"count":240,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":15,
|
||||
"componentType":5123,
|
||||
"count":240,
|
||||
"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
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":2880,
|
||||
"byteOffset":69700,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":2880,
|
||||
"byteOffset":72580,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":1920,
|
||||
"byteOffset":75460,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":480,
|
||||
"byteOffset":77380,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":77860,
|
||||
"uri":"test2.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
import * as THREE from 'three';
|
||||
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
|
||||
import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js';
|
||||
|
||||
// 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 clock = new THREE.Clock();
|
||||
const keyMap = {}
|
||||
|
||||
// 3D Loaders.
|
||||
const room = new GLTFLoader();
|
||||
const image = new THREE.TextureLoader();
|
||||
|
||||
let pawTexture, fingerTexture, currentSprite;
|
||||
|
||||
init();
|
||||
|
||||
//Initialisation
|
||||
function init() {
|
||||
// Renderer
|
||||
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||
|
||||
// Camera
|
||||
camera.position.z = 5;
|
||||
|
||||
// Light
|
||||
light.position.set(0.5, 1, 0.75);
|
||||
scene.add(light);
|
||||
|
||||
// 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);
|
||||
|
||||
room.load(
|
||||
// url of file
|
||||
'test2.gltf',
|
||||
// when resource is loaded
|
||||
function(gltf) {
|
||||
gltf.scene.position.y = -1;
|
||||
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);
|
||||
}
|
||||
);
|
||||
|
||||
image.load('paw.png', (texture) => {
|
||||
pawTexture = texture;
|
||||
image.load('finger.png', (texture) => {
|
||||
fingerTexture = texture;
|
||||
const material = new THREE.SpriteMaterial({ map: texture });
|
||||
currentSprite = new THREE.Sprite(material);
|
||||
currentSprite.position.set(1, -0.7, -1.5);
|
||||
camera.add(currentSprite);
|
||||
scene.add(camera);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function animate() {
|
||||
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);
|
||||
}
|
||||
if (keyMap['ShiftLeft']) {
|
||||
if (currentSprite && fingerTexture && currentSprite.material.map !== fingerTexture) {
|
||||
currentSprite.material.map = fingerTexture;
|
||||
console.log("finger up");
|
||||
}
|
||||
} else {
|
||||
if (currentSprite && pawTexture && currentSprite.material.map !== pawTexture) {
|
||||
currentSprite.material.map = pawTexture;
|
||||
console.log("finger down");
|
||||
}
|
||||
}
|
||||
}
|
||||
renderer.render(scene, camera);
|
||||
}
|
||||
renderer.setAnimationLoop(animate);
|
||||
@@ -41,14 +41,10 @@
|
||||
</section>
|
||||
</body>
|
||||
|
||||
<!-- Webrings -->
|
||||
<footer id="footer">
|
||||
<p> --- </p>
|
||||
<center>
|
||||
<a href="https://evilr.ing/cjsatnarine/previous"><</a>
|
||||
<a href="https://evilr.ing">EVILRING</a>
|
||||
<a href="https://evilr.ing/cjsatnarine/next">></a>
|
||||
<p> </p>
|
||||
|
||||
<script src="https://www.fluffpumpkin.net/webstring.js"></script>
|
||||
|
||||
<map name="noaimini3b">
|
||||
|
||||
Reference in New Issue
Block a user