wowowow
This commit is contained in:
parent
11f40e5d6b
commit
c4927b3120
|
@ -8,6 +8,7 @@ use serde::{Deserialize, Serialize};
|
|||
use sqlx::FromRow;
|
||||
|
||||
mod kind;
|
||||
mod names;
|
||||
mod position;
|
||||
mod size;
|
||||
|
||||
|
@ -59,6 +60,8 @@ pub struct Star {
|
|||
pub size: size::Size,
|
||||
pub position: position::Position,
|
||||
pub kind: kind::Kind,
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, JsonSchema)]
|
||||
|
@ -71,10 +74,12 @@ impl Into<Star> for Protostar {
|
|||
let mut rng = fastrand::Rng::with_seed(self.id.abs() as u64);
|
||||
let range = 0..u64::MAX;
|
||||
Star {
|
||||
core: self,
|
||||
core: self.clone(),
|
||||
kind: kind::Kind::random(rng.u64(range.clone())),
|
||||
size: size::Size::random(rng.u64(range.clone())),
|
||||
position: position::Position::random(rng.u64(range.clone())),
|
||||
name: format!("{}-{}", names::random_name(rng.u64(range.clone())), self.id,).into(),
|
||||
description: format!("a star!").into(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,12 +5,11 @@ use strum::{EnumIter, IntoEnumIterator};
|
|||
|
||||
#[derive(Serialize, Deserialize, JsonSchema, EnumIter)]
|
||||
pub enum Kind {
|
||||
Nebula,
|
||||
Planet,
|
||||
Star,
|
||||
Nova,
|
||||
Supernova,
|
||||
Banana,
|
||||
Station,
|
||||
}
|
||||
|
||||
impl Kind {
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
use fastrand::Rng;
|
||||
|
||||
pub fn random_name(seed: u64) -> String {
|
||||
let mut rand = Rng::with_seed(seed);
|
||||
let part_1 = rand.choice(name_parts()).unwrap_or("diadem");
|
||||
let part_2 = rand.choice(name_parts()).unwrap_or("tau");
|
||||
format!("{}-{}", part_1, part_2).into()
|
||||
}
|
||||
|
||||
fn name_parts() -> Vec<&'static str> {
|
||||
vec![
|
||||
"p",
|
||||
"tau",
|
||||
"sigma",
|
||||
"delta",
|
||||
"draconis",
|
||||
"cassiopeia",
|
||||
"adhara",
|
||||
"hd",
|
||||
"corvus",
|
||||
"ursa",
|
||||
"α",
|
||||
"γ",
|
||||
"pegasi",
|
||||
"crateris",
|
||||
"aa",
|
||||
"altair",
|
||||
"amadioha",
|
||||
"bellatrix",
|
||||
"betelgeuse",
|
||||
"orionis",
|
||||
"θ",
|
||||
"δ",
|
||||
"librae",
|
||||
"β",
|
||||
"tauri",
|
||||
"leonis",
|
||||
"danfeng",
|
||||
"diadem",
|
||||
"puppis",
|
||||
"WASP",
|
||||
"dìwö",
|
||||
"diya",
|
||||
"dofida",
|
||||
"electra",
|
||||
"eltanin",
|
||||
"fafnir",
|
||||
"fellis",
|
||||
"funi",
|
||||
"haftorang",
|
||||
"G",
|
||||
"cephei",
|
||||
"μ",
|
||||
"guahayona",
|
||||
"hoggar",
|
||||
"hunor",
|
||||
"horna",
|
||||
"iklil",
|
||||
"polaris",
|
||||
"tevel",
|
||||
"andromedae",
|
||||
"xihe",
|
||||
"xuange",
|
||||
"yed",
|
||||
"posterior",
|
||||
"prior",
|
||||
"zhang",
|
||||
"zaurak",
|
||||
"ζ",
|
||||
"υ",
|
||||
"HATS",
|
||||
"virginis",
|
||||
"lynx",
|
||||
"delphinus",
|
||||
"vela",
|
||||
"sansuna",
|
||||
"cassiopeiae",
|
||||
"leo",
|
||||
"sharjah",
|
||||
"shaula",
|
||||
"sheliak",
|
||||
"sheratan",
|
||||
"sirius",
|
||||
"situla",
|
||||
"solarius",
|
||||
"sterrennacht",
|
||||
"hercules",
|
||||
"scorpius",
|
||||
"andromeda",
|
||||
"sualocin",
|
||||
"lyra",
|
||||
"taika",
|
||||
"χ",
|
||||
"ι",
|
||||
"λ",
|
||||
"π",
|
||||
"HAT",
|
||||
"P",
|
||||
"ω",
|
||||
"ι",
|
||||
"pavonis",
|
||||
"cancri",
|
||||
"phact",
|
||||
"piprima",
|
||||
"australis",
|
||||
"pollux",
|
||||
"rana",
|
||||
"rapeto",
|
||||
"rigel",
|
||||
"sirius",
|
||||
"spica",
|
||||
"ribbit",
|
||||
]
|
||||
}
|
|
@ -17,7 +17,7 @@ impl Position {
|
|||
Self {
|
||||
right: rand.f64() * 100.0,
|
||||
bottom: rand.f64() * 100.0,
|
||||
width: rand.u8(16..112),
|
||||
width: rand.u8(24..112),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
|
@ -17,13 +17,13 @@
|
|||
"mesh":0,
|
||||
"name":"Cylinder",
|
||||
"scale":[
|
||||
0.20239891111850739,
|
||||
0.20239891111850739,
|
||||
0.20239891111850739
|
||||
0.3151196837425232,
|
||||
0.3151196837425232,
|
||||
0.3151196837425232
|
||||
],
|
||||
"translation":[
|
||||
0,
|
||||
0.01713314652442932,
|
||||
-0.4174487292766571,
|
||||
0
|
||||
]
|
||||
}
|
||||
|
@ -48,9 +48,9 @@
|
|||
"name":"Dark",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorFactor":[
|
||||
0.12822629511356354,
|
||||
0.006969457026571035,
|
||||
0.02585199475288391,
|
||||
0.8140411972999573,
|
||||
0.02744733728468418,
|
||||
0.13738077878952026,
|
||||
1
|
||||
],
|
||||
"metallicFactor":0
|
||||
|
|
|
@ -1,115 +0,0 @@
|
|||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v3.5.30",
|
||||
"version":"2.0"
|
||||
},
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Icosphere"
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"name":"Material.001",
|
||||
"pbrMetallicRoughness":{
|
||||
"metallicFactor":0,
|
||||
"roughnessFactor":0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"Icosphere",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"POSITION":0,
|
||||
"TEXCOORD_0":1,
|
||||
"NORMAL":2
|
||||
},
|
||||
"indices":3,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":92,
|
||||
"max":[
|
||||
0.9954347610473633,
|
||||
1.0196396112442017,
|
||||
1.0188261270523071
|
||||
],
|
||||
"min":[
|
||||
-0.9746291637420654,
|
||||
-1,
|
||||
-0.9999999403953552
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":92,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":92,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5123,
|
||||
"count":378,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":1104,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":736,
|
||||
"byteOffset":1104,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":1104,
|
||||
"byteOffset":1840,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":756,
|
||||
"byteOffset":2944,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":3700,
|
||||
"uri":"data:application/octet-stream;base64,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B86ZPtk9OT9m9+S+RpQGvwyTib6lLAO+OGd0v+F6lD1LyCc/93VAv/s6ED/LEKe+001CP1pkOz+Hpyc/pU5APuwvW79KewO/07xjvU2Ejb5m9+S+7MBZP02Ejb5m9+S+7MBZP9cScj3vycM9IGN+P8sQB740gGe/INLPPssQB740gGe/INLPPnL5P78CvAW/INLPPqW9Ib/vycM9S+pEP6W9Ib/vycM9S+pEPyV1gj3lYSG9gEh/v4Y4Nr+TOuE+9igMP0VHEj/Jdh4/zO4Jv0VHEj/Jdh4/zO4JvyL91j5Qjdc+8tJNP8pUQb7AWxC/8tJNPwAAFgAUAAUAFwAZAAQAFQAdAAMAHAAgAAIAHwAbAAUAGQAjACkAHgBTACkAUwBVAAcAHgAnAAgAIQAqACwAJABMACwATABKAAUAIwAmABgAJQBQABgAUAAJAAcAJwArAAgAKgAtACIALABKACIASgBJAAoALgA0AAsALwA3ADAAOABaADAAWgBXADEAOwBEADEARAA8AA8AMgA2ADsAEgBCADsAQgBEABEANQA+ABEAPgBAADYAMgBFADYARQA/ADsAOQASADsAMQA5ADEADQA5ADoAOAATADkADQBWADkAVgBYADAADAA4ADcAMwAQADcALwAzAC8ACgAzADQANQARADQALgA1AC4ADwA1ACQAMgAPACQALAAyACwADgAyAC0AMQAOAC0AKgAxACoADQAxAA0AKwAGAA0ABgBWACcAMABXACcAVwBbACcADAAwACgALwALACgAJQAvACUACgAvACYALgAKACYAIwAuACMADwAuACwALQAOACwAIgAtACIACAAtACoAKwANACoAIQArACEABwArACcAKQAMACcAHgApAB4AFQBSAB4AUgBTACUAJgAKACUAGAAmABgABQAmACMAJAAPACMAGQAkACQAGQBLACQASwBMABsAHwBNABsATQBHABkAGgBGABkARgBLAB8ACAAiACAAIQAIACAAHAAhABwABwAhAB0AHgAHAB0AFQAeABQAGAAJABQACQBRAB8AIgBJAB8ASQBNABkAFwAaABcAAQAaACUAKABUACUAVABQABQAFgAYABYABQAYAD0APABEAD8AQwBBAD8ARQBDAEUAPQBDAA4AMQA8AA4APAA9ADIADgA9ADIAPQBFAEgASQBKAEgASgBMAEsASABMAEcASQBIAEcATQBJAEsARgBIAE4ACQBQAE4AUABUAFMATwBVAFIATwBTAFEACQBOAFYAVwBZAFkAVwBaAAYAVwBWAAYAWwBXADgAOgBZADgAWQBaACsAJwBbACsAWwAGAA=="
|
||||
}
|
||||
]
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,164 @@
|
|||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v3.5.30",
|
||||
"version":"2.0"
|
||||
},
|
||||
"extensionsUsed":[
|
||||
"KHR_materials_clearcoat",
|
||||
"KHR_materials_transmission",
|
||||
"KHR_materials_emissive_strength",
|
||||
"KHR_materials_specular",
|
||||
"KHR_materials_ior"
|
||||
],
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cone",
|
||||
"scale":[
|
||||
0.5690511465072632,
|
||||
0.5690511465072632,
|
||||
0.5690511465072632
|
||||
],
|
||||
"translation":[
|
||||
0,
|
||||
0.02206335961818695,
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"emissiveFactor":[
|
||||
1,
|
||||
0.7336805926539774,
|
||||
0.2730392248840733
|
||||
],
|
||||
"extensions":{
|
||||
"KHR_materials_clearcoat":{
|
||||
"clearcoatFactor":1,
|
||||
"clearcoatRoughnessFactor":0.029999999329447746
|
||||
},
|
||||
"KHR_materials_transmission":{
|
||||
"transmissionFactor":1
|
||||
},
|
||||
"KHR_materials_emissive_strength":{
|
||||
"emissiveStrength":2.998099133671275
|
||||
},
|
||||
"KHR_materials_specular":{
|
||||
"specularColorFactor":[
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"KHR_materials_ior":{
|
||||
"ior":1.4500000476837158
|
||||
}
|
||||
},
|
||||
"name":"Material.001",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorFactor":[
|
||||
0.8000000715255737,
|
||||
0.5938380360603333,
|
||||
0.34376785159111023,
|
||||
1
|
||||
],
|
||||
"roughnessFactor":0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"Cone",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"POSITION":0,
|
||||
"TEXCOORD_0":1,
|
||||
"NORMAL":2
|
||||
},
|
||||
"indices":3,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":28,
|
||||
"max":[
|
||||
2.046938896179199,
|
||||
2.6071395874023438,
|
||||
1
|
||||
],
|
||||
"min":[
|
||||
-2.046938896179199,
|
||||
-2.6071395874023438,
|
||||
-1
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":28,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":28,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5123,
|
||||
"count":168,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":336,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":224,
|
||||
"byteOffset":336,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":336,
|
||||
"byteOffset":560,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":336,
|
||||
"byteOffset":896,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":1232,
|
||||
"uri":"data:application/octet-stream;base64,AAAAAAAAAAAAAIC/17NdPwAAAAAAAAC/AAAAADO8JUAAAACAAAAAAGDbJkAAAACATVsxP22ABT84y8y++AM/P6maBD8AAACAZ3T8PwAAAAD0BxW+DAEDQAAAAAAAAACA17NdvwAAAAAAAAC/TVsxv22ABT84y8y++AM/v6maBD8AAACAZ3T8vwAAAAD0BxW+DAEDwAAAAAAAAACAAAAAAAAAAAAAAIA/17NdPwAAAAAAAAA/TVsxP22ABT84y8w+Z3T8PwAAAAD0BxU+17NdvwAAAAAAAAA/TVsxv22ABT84y8w+Z3T8vwAAAAD0BxU+AAAAADO8JcAAAACAAAAAAGDbJsAAAACATVsxP22ABb84y8y++AM/P6maBL8AAACATVsxv22ABb84y8y++AM/v6maBL8AAACATVsxP22ABb84y8w+TVsxv22ABb84y8w+AACAPlyPAj/Oauo+rkchPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAIA+XI8CP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAAAAAAAAAAAAgL9eS8g+AAAAAMiYa78AAAAAAACAPwAAAIAAAAAAAACAPwAAAIBxrBs/bHj6PqkTIL9qvDQ/mEw1PwAAAIB/2V0/AAAAgAmK/74AAIA/AAAAAAAAAIBeS8i+AAAAAMiYa79xrBu/bHj6PqkTIL9qvDS/mEw1PwAAAIB/2V2/AAAAgAmK/74AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD9eS8g+AAAAAMiYaz9xrBs/bHj6PqkTID9/2V0/AAAAgAmK/z5eS8i+AAAAAMiYaz9xrBu/bHj6PqkTID9/2V2/AAAAgAmK/z4AAAAAAACAvwAAAIAAAACAAACAvwAAAIBxrBs/bHj6vqkTIL9qvDQ/mEw1vwAAAIBxrBu/bHj6vqkTIL9qvDS/mEw1vwAAAIBxrBs/bHj6vqkTID9xrBu/bHj6vqkTID8AAAMABAAAAAQAAQAEAAMAAgAEAAIABQAEAAUABwAEAAcABgAEAAYAAQAAAAgACQAAAAkAAwAJAAoAAgAJAAIAAwAJAAsADAAJAAwACgAJAAgACwANAA4ADwANAA8AAwAPAAUAAgAPAAIAAwAPABAABwAPAAcABQAPAA4AEAANAAMAEgANABIAEQASAAMAAgASAAIACgASAAoADAASAAwAEwASABMAEQAAAAEAFgAAABYAFQAWABcAFAAWABQAFQAWAAYABwAWAAcAFwAWAAEABgAAABUAGAAAABgACAAYABUAFAAYABQAGQAYABkADAAYAAwACwAYAAsACAANABUAGgANABoADgAaABUAFAAaABQAFwAaABcABwAaAAcAEAAaABAADgANABEAGwANABsAFQAbABkAFAAbABQAFQAbABMADAAbAAwAGQAbABEAEwA="
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
{
|
||||
"asset": {
|
||||
"generator": "Khronos glTF Blender I/O v3.5.30",
|
||||
"version": "2.0"
|
||||
},
|
||||
"scene": 0,
|
||||
"scenes": [
|
||||
{
|
||||
"name": "Scene",
|
||||
"nodes": [0]
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"mesh": 0,
|
||||
"name": "Icosphere"
|
||||
}
|
||||
],
|
||||
"materials": [
|
||||
{
|
||||
"doubleSided": true,
|
||||
"name": "Material.001",
|
||||
"pbrMetallicRoughness": {
|
||||
"metallicFactor": 0,
|
||||
"roughnessFactor": 0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes": [
|
||||
{
|
||||
"name": "Icosphere",
|
||||
"primitives": [
|
||||
{
|
||||
"attributes": {
|
||||
"POSITION": 0,
|
||||
"TEXCOORD_0": 1,
|
||||
"NORMAL": 2
|
||||
},
|
||||
"indices": 3,
|
||||
"material": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors": [
|
||||
{
|
||||
"bufferView": 0,
|
||||
"componentType": 5126,
|
||||
"count": 92,
|
||||
"max": [0.9954347610473633, 1.0196396112442017, 1.0188261270523071],
|
||||
"min": [-0.9746291637420654, -1, -0.9999999403953552],
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 1,
|
||||
"componentType": 5126,
|
||||
"count": 92,
|
||||
"type": "VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView": 2,
|
||||
"componentType": 5126,
|
||||
"count": 92,
|
||||
"type": "VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView": 3,
|
||||
"componentType": 5123,
|
||||
"count": 378,
|
||||
"type": "SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews": [
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteLength": 1104,
|
||||
"byteOffset": 0,
|
||||
"target": 34962
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteLength": 736,
|
||||
"byteOffset": 1104,
|
||||
"target": 34962
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteLength": 1104,
|
||||
"byteOffset": 1840,
|
||||
"target": 34962
|
||||
},
|
||||
{
|
||||
"buffer": 0,
|
||||
"byteLength": 756,
|
||||
"byteOffset": 2944,
|
||||
"target": 34963
|
||||
}
|
||||
],
|
||||
"buffers": [
|
||||
{
|
||||
"byteLength": 3700,
|
||||
"uri": "data:application/octet-stream;base64,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B86ZPtk9OT9m9+S+RpQGvwyTib6lLAO+OGd0v+F6lD1LyCc/93VAv/s6ED/LEKe+001CP1pkOz+Hpyc/pU5APuwvW79KewO/07xjvU2Ejb5m9+S+7MBZP02Ejb5m9+S+7MBZP9cScj3vycM9IGN+P8sQB740gGe/INLPPssQB740gGe/INLPPnL5P78CvAW/INLPPqW9Ib/vycM9S+pEP6W9Ib/vycM9S+pEPyV1gj3lYSG9gEh/v4Y4Nr+TOuE+9igMP0VHEj/Jdh4/zO4Jv0VHEj/Jdh4/zO4JvyL91j5Qjdc+8tJNP8pUQb7AWxC/8tJNPwAAFgAUAAUAFwAZAAQAFQAdAAMAHAAgAAIAHwAbAAUAGQAjACkAHgBTACkAUwBVAAcAHgAnAAgAIQAqACwAJABMACwATABKAAUAIwAmABgAJQBQABgAUAAJAAcAJwArAAgAKgAtACIALABKACIASgBJAAoALgA0AAsALwA3ADAAOABaADAAWgBXADEAOwBEADEARAA8AA8AMgA2ADsAEgBCADsAQgBEABEANQA+ABEAPgBAADYAMgBFADYARQA/ADsAOQASADsAMQA5ADEADQA5ADoAOAATADkADQBWADkAVgBYADAADAA4ADcAMwAQADcALwAzAC8ACgAzADQANQARADQALgA1AC4ADwA1ACQAMgAPACQALAAyACwADgAyAC0AMQAOAC0AKgAxACoADQAxAA0AKwAGAA0ABgBWACcAMABXACcAVwBbACcADAAwACgALwALACgAJQAvACUACgAvACYALgAKACYAIwAuACMADwAuACwALQAOACwAIgAtACIACAAtACoAKwANACoAIQArACEABwArACcAKQAMACcAHgApAB4AFQBSAB4AUgBTACUAJgAKACUAGAAmABgABQAmACMAJAAPACMAGQAkACQAGQBLACQASwBMABsAHwBNABsATQBHABkAGgBGABkARgBLAB8ACAAiACAAIQAIACAAHAAhABwABwAhAB0AHgAHAB0AFQAeABQAGAAJABQACQBRAB8AIgBJAB8ASQBNABkAFwAaABcAAQAaACUAKABUACUAVABQABQAFgAYABYABQAYAD0APABEAD8AQwBBAD8ARQBDAEUAPQBDAA4AMQA8AA4APAA9ADIADgA9ADIAPQBFAEgASQBKAEgASgBMAEsASABMAEcASQBIAEcATQBJAEsARgBIAE4ACQBQAE4AUABUAFMATwBVAFIATwBTAFEACQBOAFYAVwBZAFkAVwBaAAYAVwBWAAYAWwBXADgAOgBZADgAWQBaACsAJwBbACsAWwAGAA=="
|
||||
}
|
||||
]
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,159 @@
|
|||
{
|
||||
"asset":{
|
||||
"generator":"Khronos glTF Blender I/O v3.5.30",
|
||||
"version":"2.0"
|
||||
},
|
||||
"extensionsUsed":[
|
||||
"KHR_materials_clearcoat",
|
||||
"KHR_materials_transmission",
|
||||
"KHR_materials_emissive_strength",
|
||||
"KHR_materials_specular",
|
||||
"KHR_materials_ior"
|
||||
],
|
||||
"scene":0,
|
||||
"scenes":[
|
||||
{
|
||||
"name":"Scene",
|
||||
"nodes":[
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"nodes":[
|
||||
{
|
||||
"mesh":0,
|
||||
"name":"Cone",
|
||||
"translation":[
|
||||
0,
|
||||
0.02206335961818695,
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"materials":[
|
||||
{
|
||||
"doubleSided":true,
|
||||
"emissiveFactor":[
|
||||
1,
|
||||
0.7336805926539774,
|
||||
0.2730392248840733
|
||||
],
|
||||
"extensions":{
|
||||
"KHR_materials_clearcoat":{
|
||||
"clearcoatFactor":1,
|
||||
"clearcoatRoughnessFactor":0.029999999329447746
|
||||
},
|
||||
"KHR_materials_transmission":{
|
||||
"transmissionFactor":1
|
||||
},
|
||||
"KHR_materials_emissive_strength":{
|
||||
"emissiveStrength":2.998099133671275
|
||||
},
|
||||
"KHR_materials_specular":{
|
||||
"specularColorFactor":[
|
||||
1,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"KHR_materials_ior":{
|
||||
"ior":1.4500000476837158
|
||||
}
|
||||
},
|
||||
"name":"Material.001",
|
||||
"pbrMetallicRoughness":{
|
||||
"baseColorFactor":[
|
||||
0.8000000715255737,
|
||||
0.5938380360603333,
|
||||
0.34376785159111023,
|
||||
1
|
||||
],
|
||||
"roughnessFactor":0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"meshes":[
|
||||
{
|
||||
"name":"Cone",
|
||||
"primitives":[
|
||||
{
|
||||
"attributes":{
|
||||
"POSITION":0,
|
||||
"TEXCOORD_0":1,
|
||||
"NORMAL":2
|
||||
},
|
||||
"indices":3,
|
||||
"material":0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"accessors":[
|
||||
{
|
||||
"bufferView":0,
|
||||
"componentType":5126,
|
||||
"count":28,
|
||||
"max":[
|
||||
2.046938896179199,
|
||||
2.6071395874023438,
|
||||
1
|
||||
],
|
||||
"min":[
|
||||
-2.046938896179199,
|
||||
-2.6071395874023438,
|
||||
-1
|
||||
],
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":1,
|
||||
"componentType":5126,
|
||||
"count":28,
|
||||
"type":"VEC2"
|
||||
},
|
||||
{
|
||||
"bufferView":2,
|
||||
"componentType":5126,
|
||||
"count":28,
|
||||
"type":"VEC3"
|
||||
},
|
||||
{
|
||||
"bufferView":3,
|
||||
"componentType":5123,
|
||||
"count":168,
|
||||
"type":"SCALAR"
|
||||
}
|
||||
],
|
||||
"bufferViews":[
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":336,
|
||||
"byteOffset":0,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":224,
|
||||
"byteOffset":336,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":336,
|
||||
"byteOffset":560,
|
||||
"target":34962
|
||||
},
|
||||
{
|
||||
"buffer":0,
|
||||
"byteLength":336,
|
||||
"byteOffset":896,
|
||||
"target":34963
|
||||
}
|
||||
],
|
||||
"buffers":[
|
||||
{
|
||||
"byteLength":1232,
|
||||
"uri":"data:application/octet-stream;base64,AAAAAAAAAAAAAIC/17NdPwAAAAAAAAC/AAAAADO8JUAAAACAAAAAAGDbJkAAAACATVsxP22ABT84y8y++AM/P6maBD8AAACAZ3T8PwAAAAD0BxW+DAEDQAAAAAAAAACA17NdvwAAAAAAAAC/TVsxv22ABT84y8y++AM/v6maBD8AAACAZ3T8vwAAAAD0BxW+DAEDwAAAAAAAAACAAAAAAAAAAAAAAIA/17NdPwAAAAAAAAA/TVsxP22ABT84y8w+Z3T8PwAAAAD0BxU+17NdvwAAAAAAAAA/TVsxv22ABT84y8w+Z3T8vwAAAAD0BxU+AAAAADO8JcAAAACAAAAAAGDbJsAAAACATVsxP22ABb84y8y++AM/P6maBL8AAACATVsxv22ABb84y8y++AM/v6maBL8AAACATVsxP22ABb84y8w+TVsxv22ABb84y8w+AACAPlyPAj/Oauo+rkchPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAIA+XI8CP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnP85q6j6uRyE/liHVPrxsJz+WIdU+vGwnPwAAgD4AAEA/AACAPgAAQD+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz+WIdU+vGwnP5Yh1T68bCc/liHVPrxsJz8AAAAAAAAAAAAAgL9eS8g+AAAAAMiYa78AAAAAAACAPwAAAIAAAAAAAACAPwAAAIBxrBs/bHj6PqkTIL9qvDQ/mEw1PwAAAIB/2V0/AAAAgAmK/74AAIA/AAAAAAAAAIBeS8i+AAAAAMiYa79xrBu/bHj6PqkTIL9qvDS/mEw1PwAAAIB/2V2/AAAAgAmK/74AAIC/AAAAAAAAAIAAAAAAAAAAAAAAgD9eS8g+AAAAAMiYaz9xrBs/bHj6PqkTID9/2V0/AAAAgAmK/z5eS8i+AAAAAMiYaz9xrBu/bHj6PqkTID9/2V2/AAAAgAmK/z4AAAAAAACAvwAAAIAAAACAAACAvwAAAIBxrBs/bHj6vqkTIL9qvDQ/mEw1vwAAAIBxrBu/bHj6vqkTIL9qvDS/mEw1vwAAAIBxrBs/bHj6vqkTID9xrBu/bHj6vqkTID8AAAMABAAAAAQAAQAEAAMAAgAEAAIABQAEAAUABwAEAAcABgAEAAYAAQAAAAgACQAAAAkAAwAJAAoAAgAJAAIAAwAJAAsADAAJAAwACgAJAAgACwANAA4ADwANAA8AAwAPAAUAAgAPAAIAAwAPABAABwAPAAcABQAPAA4AEAANAAMAEgANABIAEQASAAMAAgASAAIACgASAAoADAASAAwAEwASABMAEQAAAAEAFgAAABYAFQAWABcAFAAWABQAFQAWAAYABwAWAAcAFwAWAAEABgAAABUAGAAAABgACAAYABUAFAAYABQAGQAYABkADAAYAAwACwAYAAsACAANABUAGgANABoADgAaABUAFAAaABQAFwAaABcABwAaAAcAEAAaABAADgANABEAGwANABsAFQAbABkAFAAbABQAFQAbABMADAAbAAwAGQAbABEAEwA="
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,16 +1,19 @@
|
|||
<template>
|
||||
<div class="weh">
|
||||
<div class="star-model">
|
||||
<canvas id="can" />
|
||||
<div class="data">wawa</div>
|
||||
<canvas
|
||||
:style="{
|
||||
filter: `drop-shadow(0 0 24px ${color}) drop-shadow(0 0 30px white)`,
|
||||
}"
|
||||
id="can"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="js">
|
||||
import * as THREE from "three";
|
||||
import { PropType, onMounted } from "vue";
|
||||
import { Star } from "@/swagger";
|
||||
import { onMounted } from "vue";
|
||||
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
|
||||
import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
|
||||
import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
|
||||
|
@ -19,7 +22,8 @@ import { StarShader } from '../scripts/star_shader';
|
|||
import { getRGB } from '../scripts/convert_color';
|
||||
|
||||
const props = defineProps({
|
||||
star: { type: Star, required: true },
|
||||
kind: { type: String, required: true },
|
||||
color: { type: String, required: true},
|
||||
});
|
||||
|
||||
onMounted(async () => {
|
||||
|
@ -28,7 +32,7 @@ onMounted(async () => {
|
|||
const renderer = new THREE.WebGLRenderer({ canvas: canvas ?? undefined });
|
||||
renderer.setClearAlpha(0.0);
|
||||
const scene = new THREE.Scene();
|
||||
const model = await loader.loadAsync("/models/banana.gltf");
|
||||
const model = await loader.loadAsync(`/models/${props.kind}.gltf`);
|
||||
const clock = new THREE.Clock();
|
||||
model.scene.traverse((child) => {
|
||||
if (child.isMesh) {
|
||||
|
@ -66,7 +70,7 @@ onMounted(async () => {
|
|||
renderer.setPixelRatio(1 / (width / 125));
|
||||
}
|
||||
|
||||
const rgb = getRGB(props.star.core.color);
|
||||
const rgb = getRGB(props.color);
|
||||
const starShader = StarShader;
|
||||
starShader.uniforms.red.value = rgb[0] / 256;
|
||||
starShader.uniforms.green.value = rgb[1] / 256;
|
|
@ -0,0 +1,21 @@
|
|||
<template>
|
||||
<div class="description">
|
||||
<h1>{{ star.name }}</h1>
|
||||
<p>{{ star.description }}</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { PropType } from "vue";
|
||||
import { Star } from "@/swagger";
|
||||
|
||||
defineProps({
|
||||
star: { type: Object as PropType<Star>, required: true },
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.description {
|
||||
padding: 1em;
|
||||
}
|
||||
</style>
|
|
@ -50,12 +50,24 @@ export interface Star {
|
|||
* @memberof Star
|
||||
*/
|
||||
core: Protostar;
|
||||
/**
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof Star
|
||||
*/
|
||||
description: any | null;
|
||||
/**
|
||||
*
|
||||
* @type {Kind}
|
||||
* @memberof Star
|
||||
*/
|
||||
kind: Kind;
|
||||
/**
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof Star
|
||||
*/
|
||||
name: any | null;
|
||||
/**
|
||||
*
|
||||
* @type {Position}
|
||||
|
@ -76,7 +88,9 @@ export interface Star {
|
|||
export function instanceOfStar(value: object): boolean {
|
||||
let isInstance = true;
|
||||
isInstance = isInstance && "core" in value;
|
||||
isInstance = isInstance && "description" in value;
|
||||
isInstance = isInstance && "kind" in value;
|
||||
isInstance = isInstance && "name" in value;
|
||||
isInstance = isInstance && "position" in value;
|
||||
isInstance = isInstance && "size" in value;
|
||||
|
||||
|
@ -94,7 +108,9 @@ export function StarFromJSONTyped(json: any, ignoreDiscriminator: boolean): Star
|
|||
return {
|
||||
|
||||
'core': ProtostarFromJSON(json['core']),
|
||||
'description': json['description'],
|
||||
'kind': KindFromJSON(json['kind']),
|
||||
'name': json['name'],
|
||||
'position': PositionFromJSON(json['position']),
|
||||
'size': SizeFromJSON(json['size']),
|
||||
};
|
||||
|
@ -110,7 +126,9 @@ export function StarToJSON(value?: Star | null): any {
|
|||
return {
|
||||
|
||||
'core': ProtostarToJSON(value.core),
|
||||
'description': value.description,
|
||||
'kind': KindToJSON(value.kind),
|
||||
'name': value.name,
|
||||
'position': PositionToJSON(value.position),
|
||||
'size': SizeToJSON(value.size),
|
||||
};
|
||||
|
|
|
@ -1,13 +1,23 @@
|
|||
<template>
|
||||
<div>
|
||||
<Suspense>
|
||||
<LargeStar v-if="store.visiting" :star="store.visiting" />
|
||||
</Suspense>
|
||||
<div class="star-view">
|
||||
<div class="star-model">
|
||||
<Suspense>
|
||||
<LargeStarModel
|
||||
v-if="store.visiting"
|
||||
:kind="store.visiting.kind.toString().toLowerCase()"
|
||||
:color="store.visiting.core.color"
|
||||
/>
|
||||
</Suspense>
|
||||
</div>
|
||||
<div v-if="store.visiting" class="star-info">
|
||||
<StarDescription :star="store.visiting" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import LargeStar from "@/components/LargeStar.vue";
|
||||
import LargeStarModel from "@/components/LargeStarModel.vue";
|
||||
import StarDescription from "@/components/StarDescription.vue";
|
||||
import { useChartStore } from "@/state/stars";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
|
@ -17,3 +27,27 @@ const id: string = route.params.id.toString();
|
|||
const store = useChartStore();
|
||||
store.visit(parseInt(id) ?? 1);
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.star-view {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.star-model {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.star-info {
|
||||
flex-grow: 2;
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.star-view {
|
||||
width: 100%;
|
||||
align-items: stretch;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
Loading…
Reference in New Issue