diff --git a/assets/index-DzQPpAfh.js b/assets/index-DoCjgVtU.js similarity index 99% rename from assets/index-DzQPpAfh.js rename to assets/index-DoCjgVtU.js index 48a6f04..6e1d725 100644 --- a/assets/index-DzQPpAfh.js +++ b/assets/index-DoCjgVtU.js @@ -3954,4 +3954,4 @@ vec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}vec4 mod289(vec4 x){ret gl_FragColor = vec4(vColor, strength * vOpacity); #include #include <${Xb>=154?"colorspace_fragment":"encodings_fragment"}> - }`),Kb=n=>n&&n.constructor===Float32Array,UB=n=>[n.r,n.g,n.b],Zb=n=>n instanceof pe||n instanceof U||n instanceof zt,Qb=n=>Array.isArray(n)?n:Zb(n)?n.toArray():[n,n,n];function Ac(n,e,t){return ne.useMemo(()=>{if(e!==void 0){if(Kb(e))return e;if(e instanceof Oe){const i=Array.from({length:n*3},()=>UB(e)).flat();return Float32Array.from(i)}else if(Zb(e)||Array.isArray(e)){const i=Array.from({length:n*3},()=>Qb(e)).flat();return Float32Array.from(i)}return Float32Array.from({length:n},()=>e)}return Float32Array.from({length:n},t)},[e])}const kn=ne.forwardRef(({noise:n=1,count:e=100,speed:t=1,opacity:i=1,scale:r=1,size:s,color:o,children:a,...u},f)=>{ne.useMemo(()=>Zx({SparklesImplMaterial:OB}),[]);const h=ne.useRef(null),d=Ss(M=>M.viewport.dpr),p=Qb(r),v=ne.useMemo(()=>Float32Array.from(Array.from({length:e},()=>p.map(Of.randFloatSpread)).flat()),[e,...p]),y=Ac(e,s,Math.random),w=Ac(e,i),_=Ac(e,t),m=Ac(e*3,n),S=Ac(o===void 0?e*3:e,Kb(o)?o:new Oe(o),()=>1);return Uu(M=>{h.current&&h.current.material&&(h.current.material.time=M.clock.elapsedTime)}),ne.useImperativeHandle(f,()=>h.current,[]),ne.createElement("points",Bs({key:`particle-${e}-${JSON.stringify(r)}`},u,{ref:h}),ne.createElement("bufferGeometry",null,ne.createElement("bufferAttribute",{attach:"attributes-position",args:[v,3]}),ne.createElement("bufferAttribute",{attach:"attributes-size",args:[y,1]}),ne.createElement("bufferAttribute",{attach:"attributes-opacity",args:[w,1]}),ne.createElement("bufferAttribute",{attach:"attributes-speed",args:[_,1]}),ne.createElement("bufferAttribute",{attach:"attributes-color",args:[S,3]}),ne.createElement("bufferAttribute",{attach:"attributes-noise",args:[m,3]})),a||ne.createElement("sparklesImplMaterial",{transparent:!0,pixelRatio:d,depthWrite:!1}))});function HE(n,e){if(e===eR)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(e===Kp||e===dx){let t=n.getIndex();if(t===null){const o=[],a=n.getAttribute("position");if(a!==void 0){for(let u=0;u=2.0 are supported."));return}const f=new p4(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});f.fileLoader.setRequestHeader(this.requestHeader);for(let h=0;h=0&&a[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}f.setExtensions(o),f.setPlugins(a),f.parse(i,r)}parseAsync(e,t){const i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}}function FB(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const Ct={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class kB{constructor(e){this.parser=e,this.name=Ct.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,o)}}class QB{constructor(e){this.parser=e,this.name=Ct.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let u=i.textureLoader;if(a.uri){const f=i.options.manager.getHandler(a.uri);f!==null&&(u=f)}return this.detectSupport().then(function(f){if(f)return i.loadTextureImage(e,o.source,u);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class JB{constructor(e){this.parser=e,this.name=Ct.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let u=i.textureLoader;if(a.uri){const f=i.options.manager.getHandler(a.uri);f!==null&&(u=f)}return this.detectSupport().then(function(f){if(f)return i.loadTextureImage(e,o.source,u);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class $B{constructor(e){this.name=Ct.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(a){const u=r.byteOffset||0,f=r.byteLength||0,h=r.count,d=r.byteStride,p=new Uint8Array(a,u,f);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(h,d,p,r.mode,r.filter).then(function(v){return v.buffer}):o.ready.then(function(){const v=new ArrayBuffer(h*d);return o.decodeGltfBuffer(new Uint8Array(v),h,d,p,r.mode,r.filter),v})})}else return null}}class e4{constructor(e){this.name=Ct.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const r=t.meshes[i.mesh];for(const f of r.primitives)if(f.mode!==fr.TRIANGLES&&f.mode!==fr.TRIANGLE_STRIP&&f.mode!==fr.TRIANGLE_FAN&&f.mode!==void 0)return null;const o=i.extensions[this.name].attributes,a=[],u={};for(const f in o)a.push(this.parser.getDependency("accessor",o[f]).then(h=>(u[f]=h,u[f])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(f=>{const h=f.pop(),d=h.isGroup?h.children:[h],p=f[0].count,v=[];for(const y of d){const w=new nt,_=new U,m=new Hn,S=new U(1,1,1),M=new Rx(y.geometry,y.material,p);for(let T=0;T0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const d4=new nt;class p4{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new FB,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=!1,s=-1;typeof navigator<"u"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,r=navigator.userAgent.indexOf("Firefox")>-1,s=r?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||i||r&&s<98?this.textureLoader=new tb(this.options.manager):this.textureLoader=new ub(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new xr(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][r.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:r.asset,parser:i,userData:{}};return ua(s,a,r),uo(a,r),Promise.all(i._invokeAll(function(u){return u.afterRoot&&u.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{const u=this.associations.get(o);u!=null&&this.associations.set(a,u);for(const[f,h]of o.children.entries())s(h,a.children[f])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&_.setY(W,R[P*u+1]),u>=3&&_.setZ(W,R[P*u+2]),u>=4&&_.setW(W,R[P*u+3]),u>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return _})}loadTexture(e){const t=this.json,i=this.options,s=t.textures[e].source,o=t.images[s];let a=this.textureLoader;if(o.uri){const u=i.manager.getHandler(o.uri);u!==null&&(a=u)}return this.loadTextureImage(e,s,a)}loadTextureImage(e,t,i){const r=this,s=this.json,o=s.textures[e],a=s.images[t],u=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[u])return this.textureCache[u];const f=this.loadImageSource(t,i).then(function(h){h.flipY=!1,h.name=o.name||a.name||"",h.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(h.name=a.uri);const p=(s.samplers||{})[o.sampler]||{};return h.magFilter=GE[p.magFilter]||Kt,h.minFilter=GE[p.minFilter]||gr,h.wrapS=WE[p.wrapS]||Io,h.wrapT=WE[p.wrapT]||Io,r.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[u]=f,f}loadImageSource(e,t){const i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=r.images[e],a=self.URL||self.webkitURL;let u=o.uri||"",f=!1;if(o.bufferView!==void 0)u=i.getDependency("bufferView",o.bufferView).then(function(d){f=!0;const p=new Blob([d],{type:o.mimeType});return u=a.createObjectURL(p),u});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(u).then(function(d){return new Promise(function(p,v){let y=p;t.isImageBitmapLoader===!0&&(y=function(w){const _=new Qt(w);_.needsUpdate=!0,p(_)}),t.load(Ro.resolveURL(d,s.path),y,void 0,v)})}).then(function(d){return f===!0&&a.revokeObjectURL(u),d.userData.mimeType=o.mimeType||h4(o.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",u),d});return this.sourceCache[e]=h,h}assignTexture(e,t,i,r){const s=this;return this.getDependency("texture",i.index).then(function(o){if(!o)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(o=o.clone(),o.channel=i.texCoord),s.extensions[Ct.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[Ct.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const u=s.associations.get(o);o=s.extensions[Ct.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),s.associations.set(o,u)}}return r!==void 0&&(o.colorSpace=r),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+i.uuid;let u=this.cache.get(a);u||(u=new Rm,An.prototype.copy.call(u,i),u.color.copy(i.color),u.map=i.map,u.sizeAttenuation=!1,this.cache.add(a,u)),i=u}else if(e.isLine){const a="LineBasicMaterial:"+i.uuid;let u=this.cache.get(a);u||(u=new hi,An.prototype.copy.call(u,i),u.color.copy(i.color),u.map=i.map,this.cache.add(a,u)),i=u}if(r||s||o){let a="ClonedMaterial:"+i.uuid+":";r&&(a+="derivative-tangents:"),s&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let u=this.cache.get(a);u||(u=i.clone(),s&&(u.vertexColors=!0),o&&(u.flatShading=!0),r&&(u.normalScale&&(u.normalScale.y*=-1),u.clearcoatNormalScale&&(u.clearcoatNormalScale.y*=-1)),this.cache.add(a,u),this.associations.set(u,this.associations.get(i))),i=u}e.material=i}getMaterialType(){return Du}loadMaterial(e){const t=this,i=this.json,r=this.extensions,s=i.materials[e];let o;const a={},u=s.extensions||{},f=[];if(u[Ct.KHR_MATERIALS_UNLIT]){const d=r[Ct.KHR_MATERIALS_UNLIT];o=d.getMaterialType(),f.push(d.extendParams(a,s,t))}else{const d=s.pbrMetallicRoughness||{};if(a.color=new Oe(1,1,1),a.opacity=1,Array.isArray(d.baseColorFactor)){const p=d.baseColorFactor;a.color.setRGB(p[0],p[1],p[2],Vn),a.opacity=p[3]}d.baseColorTexture!==void 0&&f.push(t.assignTexture(a,"map",d.baseColorTexture,qn)),a.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,a.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(f.push(t.assignTexture(a,"metalnessMap",d.metallicRoughnessTexture)),f.push(t.assignTexture(a,"roughnessMap",d.metallicRoughnessTexture))),o=this._invokeOne(function(p){return p.getMaterialType&&p.getMaterialType(e)}),f.push(Promise.all(this._invokeAll(function(p){return p.extendMaterialParams&&p.extendMaterialParams(e,a)})))}s.doubleSided===!0&&(a.side=Nr);const h=s.alphaMode||xv.OPAQUE;if(h===xv.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,h===xv.MASK&&(a.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==ji&&(f.push(t.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new pe(1,1),s.normalTexture.scale!==void 0)){const d=s.normalTexture.scale;a.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&o!==ji&&(f.push(t.assignTexture(a,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==ji){const d=s.emissiveFactor;a.emissive=new Oe().setRGB(d[0],d[1],d[2],Vn)}return s.emissiveTexture!==void 0&&o!==ji&&f.push(t.assignTexture(a,"emissiveMap",s.emissiveTexture,qn)),Promise.all(f).then(function(){const d=new o(a);return s.name&&(d.name=s.name),uo(d,s),t.associations.set(d,{materials:e}),s.extensions&&ua(r,d,s),d})}createUniqueName(e){const t=Pt.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function s(a){return i[Ct.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(u){return jE(u,a,t)})}const o=[];for(let a=0,u=e.length;a0&&c4(m,s),m.name=t.createUniqueName(s.name||"mesh_"+e),uo(m,s),_.extensions&&ua(r,m,_),t.assignFinalMaterial(m),d.push(m)}for(let v=0,y=d.length;v1?h=new Ps:f.length===1?h=f[0]:h=new Lt,h!==f[0])for(let d=0,p=f.length;d{const d=new Map;for(const[p,v]of r.associations)(p instanceof An||p instanceof Qt)&&d.set(p,v);return h.traverse(p=>{const v=r.associations.get(p);v!=null&&d.set(p,v)}),d};return r.associations=f(s),s})}_createAnimationTracks(e,t,i,r,s){const o=[],a=e.name?e.name:e.uuid,u=[];oo[s.path]===oo.weights?e.traverse(function(p){p.morphTargetInfluences&&u.push(p.name?p.name:p.uuid)}):u.push(a);let f;switch(oo[s.path]){case oo.weights:f=Ba;break;case oo.rotation:f=Do;break;case oo.position:case oo.scale:f=Ha;break;default:switch(i.itemSize){case 1:f=Ba;break;case 2:case 3:default:f=Ha;break}break}const h=r.interpolation!==void 0?a4[r.interpolation]:Fa,d=this._getArrayFromAccessor(i);for(let p=0,v=u.length;p{console.log("Ocean Clicked")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function r(){if(!n)return q.jsx("mesh",{position:[15,-12,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Try zooming in!",q.jsx(En,{distort:.1,speed:2,color:"hotpink"})]})})}function s(w){const _=ne.useRef();return q.jsx("group",{children:q.jsxs("mesh",{ref:_,children:[q.jsx(i,{}),q.jsx(o_,{})]})})}function o(){const w=pr($r,"./models/about.glb"),_=ne.useRef(),m=()=>{console.log("About Clicked"),window.open("https://oia20.github.io/PortfolioAbout/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function a(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(o,{})})})}function u(){const w=pr($r,"./models/git.glb"),_=ne.useRef(),m=()=>{console.log("Git Clicked"),window.open("https://github.com/Oia20","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function f(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(u,{})})})}function h(){const w=pr($r,"./models/linkedinn.glb"),_=ne.useRef(),m=()=>{console.log("Ocean Clicked"),window.open("https://www.linkedin.com/in/jacob-dement-35658b275/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function d(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(h,{})})})}function p(){const w=pr($r,"./models/Projects.glb"),_=ne.useRef(),m=()=>{console.log("Projects Clicked")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function v(w){const _=ne.useRef();return q.jsx("group",{children:q.jsxs("mesh",{ref:_,children:[q.jsx(p,{}),q.jsx(o_,{})]})})}const y=()=>{const w=ne.useRef!0;return q.jsxs(q.Fragment,{children:[q.jsx("directionalLight",{color:"blue",intensity:1,useRef:w,position:[10,5,10]}),q.jsx("directionalLight",{color:"whitesmoke",intensity:1,useRef:w,position:[10,5,10]})]})};return q.jsx(Gb,{style:{background:"linear-gradient(70deg, #201658, #1597E5, #201658)",position:"absolute",top:0,left:0,right:0,bottom:0},camera:{fov:90,position:[25,-8,20]},onWheel:t,children:q.jsxs(ne.Suspense,{fallback:g4,children:[q.jsx(Yb,{target:[0,-10,0],maxDistance:50,minDistance:1,enablePan:!1,maxPolarAngle:1.8,enableDamping:!0,enableRotate:!0,enableZoom:!0}),q.jsx("ambientLight",{intensity:.9}),q.jsx(kn,{scale:14,size:5,position:[0,-8,0],count:40}),q.jsx(kn,{scale:14,size:5,position:[11,-8,0],count:40}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,0],count:40}),q.jsx(kn,{scale:14,size:5,position:[0,-8,11],count:40}),q.jsx(kn,{scale:14,size:5,position:[0,-8,-11],count:40}),q.jsx(kn,{scale:14,size:5,position:[11,-8,11],count:40}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,11],count:40}),q.jsx(kn,{scale:14,size:5,position:[11,-8,-11],count:40}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,-11],count:40}),q.jsx(y,{}),q.jsxs(cu,{children:[q.jsx(s,{}),q.jsx(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.3,children:q.jsx(a,{})}),q.jsxs(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.4,children:[q.jsx(d,{}),q.jsx(v,{}),q.jsx(f,{})]}),q.jsx(qb,{}),q.jsx("mesh",{position:[-2,-9,16],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Github",q.jsx(En,{distort:.3,speed:2,color:"black"})]})}),q.jsx("mesh",{position:[-6,-3,19],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["LinkedIn",q.jsx(En,{distort:.2,speed:2,color:"blue"})]})}),q.jsx("mesh",{position:[13,-13,-4],rotation:[0,.8,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Projects",q.jsx(En,{distort:.2,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-9,-6,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Hi! I'm Jacob Dement!",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-7,-8,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["~ Software Developer",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-15,-6,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Click me or the boat",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-8,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["To travel to",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-10,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["my about page.",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-10,8,0],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["Click boat to travel to my room!",q.jsx(En,{distort:.1,speed:2,color:"whitesmoke"})]})}),q.jsx(r,{})]})]})})}function y4(){const{progress:n}=Wb();return q.jsx(Html,{center:!0,children:q.jsxs("h1",{children:[Math.ceil(n)," % loaded"]})})}function _4(){const[n,e]=ne.useState(!1);function t(){e(!0)}function i(){const w=pr($r,"./models/ocean.glb"),_=ne.useRef(),m=()=>{console.log("Ocean Clicked")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function r(w){const _=ne.useRef();return q.jsx("mesh",{ref:_,children:q.jsx(i,{})})}function s(){const w=pr($r,"./models/about.glb"),_=ne.useRef(),m=()=>{console.log("About Clicked"),window.open("https://oia20.github.io/PortfolioAbout/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function o(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(s,{})})})}function a(){const w=pr($r,"./models/git.glb"),_=ne.useRef(),m=()=>{console.log("Git Clicked"),window.open("https://github.com/Oia20","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function u(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(a,{})})})}function f(){const w=pr($r,"./models/linkedinn.glb"),_=ne.useRef(),m=()=>{console.log("Ocean Clicked"),window.open("https://www.linkedin.com/in/jacob-dement-35658b275/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function h(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(f,{})})})}function d(){if(!n)return q.jsx("mesh",{position:[15,0,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Try zooming in!",q.jsx(En,{distort:.1,speed:2,color:"hotpink"})]})})}function p(){const w=pr($r,"./models/Projects.glb"),_=ne.useRef(),m=()=>{window.open("https://oia20.github.io/Projects/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function v(w){const _=ne.useRef();return q.jsx("group",{children:q.jsxs("mesh",{ref:_,children:[q.jsx(p,{}),q.jsx(o_,{})]})})}const y=()=>{const w=ne.useRef!0;return q.jsxs(q.Fragment,{children:[q.jsx("directionalLight",{color:"blue",intensity:1,useRef:w,position:[10,5,10]}),q.jsx("directionalLight",{color:"whitesmoke",intensity:1,useRef:w,position:[10,5,10]})]})};return q.jsx(Gb,{style:{background:"linear-gradient(70deg, #201658, #1597E5, #201658)",position:"absolute",top:0,left:0,right:0,bottom:0},camera:{fov:120,position:[30,-8,20]},onClick:t,children:q.jsxs(ne.Suspense,{fallback:y4,children:[q.jsx(Yb,{target:[0,-10,0],maxDistance:50,minDistance:1,enablePan:!1,maxPolarAngle:2,enableDamping:!0,enableRotate:!0,enableZoom:!0}),q.jsx("ambientLight",{intensity:.9}),q.jsx(kn,{scale:14,size:5,position:[0,-8,0],count:20}),q.jsx(kn,{scale:14,size:5,position:[11,-8,0],count:20}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,0],count:20}),q.jsx(kn,{scale:14,size:5,position:[0,-8,11],count:20}),q.jsx(kn,{scale:14,size:5,position:[0,-8,-11],count:20}),q.jsx(kn,{scale:14,size:5,position:[11,-8,11],count:20}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,11],count:20}),q.jsx(kn,{scale:14,size:5,position:[11,-8,-11],count:20}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,-11],count:20}),q.jsx(y,{}),q.jsxs(cu,{children:[q.jsx(r,{}),q.jsx(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.3,children:q.jsx(o,{})}),q.jsxs(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.4,children:[q.jsx(h,{}),q.jsx(v,{}),q.jsx(u,{})]}),q.jsx(qb,{count:750}),q.jsx("mesh",{position:[-2,-9,16],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Github",q.jsx(En,{distort:.3,speed:2,color:"black"})]})}),q.jsx("mesh",{position:[-6,-3,19],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["LinkedIn",q.jsx(En,{distort:.2,speed:2,color:"blue"})]})}),q.jsx("mesh",{position:[13,-13,-4],rotation:[0,.8,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Projects",q.jsx(En,{distort:.2,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-9,-6,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Hi! I'm Jacob Dement!",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-7,-8,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["~ Software Developer",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-15,-6,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Click me or the boat",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-8,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["To travel to",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-10,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["my about page.",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx(d,{}),q.jsx("mesh",{position:[-10,8,0],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["Click boat to travel to my room!",q.jsx(En,{distort:.1,speed:2,color:"whitesmoke"})]})})]})]})})}function x4(){return q.jsx(lC,{queries:{large:{minWidth:1e3},small:{maxWidth:999,minHeight:100}},children:n=>q.jsxs(ne.Fragment,{children:[n.large&&q.jsx(v4,{}),n.small&&q.jsx(_4,{})]})})}Mv.createRoot(document.getElementById("root")).render(q.jsx(q.Fragment,{children:q.jsx(x4,{})})); + }`),Kb=n=>n&&n.constructor===Float32Array,UB=n=>[n.r,n.g,n.b],Zb=n=>n instanceof pe||n instanceof U||n instanceof zt,Qb=n=>Array.isArray(n)?n:Zb(n)?n.toArray():[n,n,n];function Ac(n,e,t){return ne.useMemo(()=>{if(e!==void 0){if(Kb(e))return e;if(e instanceof Oe){const i=Array.from({length:n*3},()=>UB(e)).flat();return Float32Array.from(i)}else if(Zb(e)||Array.isArray(e)){const i=Array.from({length:n*3},()=>Qb(e)).flat();return Float32Array.from(i)}return Float32Array.from({length:n},()=>e)}return Float32Array.from({length:n},t)},[e])}const kn=ne.forwardRef(({noise:n=1,count:e=100,speed:t=1,opacity:i=1,scale:r=1,size:s,color:o,children:a,...u},f)=>{ne.useMemo(()=>Zx({SparklesImplMaterial:OB}),[]);const h=ne.useRef(null),d=Ss(M=>M.viewport.dpr),p=Qb(r),v=ne.useMemo(()=>Float32Array.from(Array.from({length:e},()=>p.map(Of.randFloatSpread)).flat()),[e,...p]),y=Ac(e,s,Math.random),w=Ac(e,i),_=Ac(e,t),m=Ac(e*3,n),S=Ac(o===void 0?e*3:e,Kb(o)?o:new Oe(o),()=>1);return Uu(M=>{h.current&&h.current.material&&(h.current.material.time=M.clock.elapsedTime)}),ne.useImperativeHandle(f,()=>h.current,[]),ne.createElement("points",Bs({key:`particle-${e}-${JSON.stringify(r)}`},u,{ref:h}),ne.createElement("bufferGeometry",null,ne.createElement("bufferAttribute",{attach:"attributes-position",args:[v,3]}),ne.createElement("bufferAttribute",{attach:"attributes-size",args:[y,1]}),ne.createElement("bufferAttribute",{attach:"attributes-opacity",args:[w,1]}),ne.createElement("bufferAttribute",{attach:"attributes-speed",args:[_,1]}),ne.createElement("bufferAttribute",{attach:"attributes-color",args:[S,3]}),ne.createElement("bufferAttribute",{attach:"attributes-noise",args:[m,3]})),a||ne.createElement("sparklesImplMaterial",{transparent:!0,pixelRatio:d,depthWrite:!1}))});function HE(n,e){if(e===eR)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(e===Kp||e===dx){let t=n.getIndex();if(t===null){const o=[],a=n.getAttribute("position");if(a!==void 0){for(let u=0;u=2.0 are supported."));return}const f=new p4(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});f.fileLoader.setRequestHeader(this.requestHeader);for(let h=0;h=0&&a[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}f.setExtensions(o),f.setPlugins(a),f.parse(i,r)}parseAsync(e,t){const i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}}function FB(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}const Ct={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class kB{constructor(e){this.parser=e,this.name=Ct.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,o)}}class QB{constructor(e){this.parser=e,this.name=Ct.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let u=i.textureLoader;if(a.uri){const f=i.options.manager.getHandler(a.uri);f!==null&&(u=f)}return this.detectSupport().then(function(f){if(f)return i.loadTextureImage(e,o.source,u);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class JB{constructor(e){this.parser=e,this.name=Ct.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const o=s.extensions[t],a=r.images[o.source];let u=i.textureLoader;if(a.uri){const f=i.options.manager.getHandler(a.uri);f!==null&&(u=f)}return this.detectSupport().then(function(f){if(f)return i.loadTextureImage(e,o.source,u);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return i.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(t.height===1)}})),this.isSupported}}class $B{constructor(e){this.name=Ct.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),o=this.parser.options.meshoptDecoder;if(!o||!o.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(a){const u=r.byteOffset||0,f=r.byteLength||0,h=r.count,d=r.byteStride,p=new Uint8Array(a,u,f);return o.decodeGltfBufferAsync?o.decodeGltfBufferAsync(h,d,p,r.mode,r.filter).then(function(v){return v.buffer}):o.ready.then(function(){const v=new ArrayBuffer(h*d);return o.decodeGltfBuffer(new Uint8Array(v),h,d,p,r.mode,r.filter),v})})}else return null}}class e4{constructor(e){this.name=Ct.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;const r=t.meshes[i.mesh];for(const f of r.primitives)if(f.mode!==fr.TRIANGLES&&f.mode!==fr.TRIANGLE_STRIP&&f.mode!==fr.TRIANGLE_FAN&&f.mode!==void 0)return null;const o=i.extensions[this.name].attributes,a=[],u={};for(const f in o)a.push(this.parser.getDependency("accessor",o[f]).then(h=>(u[f]=h,u[f])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(f=>{const h=f.pop(),d=h.isGroup?h.children:[h],p=f[0].count,v=[];for(const y of d){const w=new nt,_=new U,m=new Hn,S=new U(1,1,1),M=new Rx(y.geometry,y.material,p);for(let T=0;T0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const d4=new nt;class p4{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new FB,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=!1,s=-1;typeof navigator<"u"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,r=navigator.userAgent.indexOf("Firefox")>-1,s=r?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||i||r&&s<98?this.textureLoader=new tb(this.options.manager):this.textureLoader=new ub(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new xr(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(o){return o._markDefs&&o._markDefs()}),Promise.all(this._invokeAll(function(o){return o.beforeRoot&&o.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(o){const a={scene:o[0][r.scene||0],scenes:o[0],animations:o[1],cameras:o[2],asset:r.asset,parser:i,userData:{}};return ua(s,a,r),uo(a,r),Promise.all(i._invokeAll(function(u){return u.afterRoot&&u.afterRoot(a)})).then(function(){e(a)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{const u=this.associations.get(o);u!=null&&this.associations.set(a,u);for(const[f,h]of o.children.entries())s(h,a.children[f])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&_.setY(W,R[P*u+1]),u>=3&&_.setZ(W,R[P*u+2]),u>=4&&_.setW(W,R[P*u+3]),u>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return _})}loadTexture(e){const t=this.json,i=this.options,s=t.textures[e].source,o=t.images[s];let a=this.textureLoader;if(o.uri){const u=i.manager.getHandler(o.uri);u!==null&&(a=u)}return this.loadTextureImage(e,s,a)}loadTextureImage(e,t,i){const r=this,s=this.json,o=s.textures[e],a=s.images[t],u=(a.uri||a.bufferView)+":"+o.sampler;if(this.textureCache[u])return this.textureCache[u];const f=this.loadImageSource(t,i).then(function(h){h.flipY=!1,h.name=o.name||a.name||"",h.name===""&&typeof a.uri=="string"&&a.uri.startsWith("data:image/")===!1&&(h.name=a.uri);const p=(s.samplers||{})[o.sampler]||{};return h.magFilter=GE[p.magFilter]||Kt,h.minFilter=GE[p.minFilter]||gr,h.wrapS=WE[p.wrapS]||Io,h.wrapT=WE[p.wrapT]||Io,r.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[u]=f,f}loadImageSource(e,t){const i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());const o=r.images[e],a=self.URL||self.webkitURL;let u=o.uri||"",f=!1;if(o.bufferView!==void 0)u=i.getDependency("bufferView",o.bufferView).then(function(d){f=!0;const p=new Blob([d],{type:o.mimeType});return u=a.createObjectURL(p),u});else if(o.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(u).then(function(d){return new Promise(function(p,v){let y=p;t.isImageBitmapLoader===!0&&(y=function(w){const _=new Qt(w);_.needsUpdate=!0,p(_)}),t.load(Ro.resolveURL(d,s.path),y,void 0,v)})}).then(function(d){return f===!0&&a.revokeObjectURL(u),d.userData.mimeType=o.mimeType||h4(o.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",u),d});return this.sourceCache[e]=h,h}assignTexture(e,t,i,r){const s=this;return this.getDependency("texture",i.index).then(function(o){if(!o)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(o=o.clone(),o.channel=i.texCoord),s.extensions[Ct.KHR_TEXTURE_TRANSFORM]){const a=i.extensions!==void 0?i.extensions[Ct.KHR_TEXTURE_TRANSFORM]:void 0;if(a){const u=s.associations.get(o);o=s.extensions[Ct.KHR_TEXTURE_TRANSFORM].extendTexture(o,a),s.associations.set(o,u)}}return r!==void 0&&(o.colorSpace=r),e[t]=o,o})}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,o=t.attributes.normal===void 0;if(e.isPoints){const a="PointsMaterial:"+i.uuid;let u=this.cache.get(a);u||(u=new Rm,An.prototype.copy.call(u,i),u.color.copy(i.color),u.map=i.map,u.sizeAttenuation=!1,this.cache.add(a,u)),i=u}else if(e.isLine){const a="LineBasicMaterial:"+i.uuid;let u=this.cache.get(a);u||(u=new hi,An.prototype.copy.call(u,i),u.color.copy(i.color),u.map=i.map,this.cache.add(a,u)),i=u}if(r||s||o){let a="ClonedMaterial:"+i.uuid+":";r&&(a+="derivative-tangents:"),s&&(a+="vertex-colors:"),o&&(a+="flat-shading:");let u=this.cache.get(a);u||(u=i.clone(),s&&(u.vertexColors=!0),o&&(u.flatShading=!0),r&&(u.normalScale&&(u.normalScale.y*=-1),u.clearcoatNormalScale&&(u.clearcoatNormalScale.y*=-1)),this.cache.add(a,u),this.associations.set(u,this.associations.get(i))),i=u}e.material=i}getMaterialType(){return Du}loadMaterial(e){const t=this,i=this.json,r=this.extensions,s=i.materials[e];let o;const a={},u=s.extensions||{},f=[];if(u[Ct.KHR_MATERIALS_UNLIT]){const d=r[Ct.KHR_MATERIALS_UNLIT];o=d.getMaterialType(),f.push(d.extendParams(a,s,t))}else{const d=s.pbrMetallicRoughness||{};if(a.color=new Oe(1,1,1),a.opacity=1,Array.isArray(d.baseColorFactor)){const p=d.baseColorFactor;a.color.setRGB(p[0],p[1],p[2],Vn),a.opacity=p[3]}d.baseColorTexture!==void 0&&f.push(t.assignTexture(a,"map",d.baseColorTexture,qn)),a.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,a.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(f.push(t.assignTexture(a,"metalnessMap",d.metallicRoughnessTexture)),f.push(t.assignTexture(a,"roughnessMap",d.metallicRoughnessTexture))),o=this._invokeOne(function(p){return p.getMaterialType&&p.getMaterialType(e)}),f.push(Promise.all(this._invokeAll(function(p){return p.extendMaterialParams&&p.extendMaterialParams(e,a)})))}s.doubleSided===!0&&(a.side=Nr);const h=s.alphaMode||xv.OPAQUE;if(h===xv.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,h===xv.MASK&&(a.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&o!==ji&&(f.push(t.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new pe(1,1),s.normalTexture.scale!==void 0)){const d=s.normalTexture.scale;a.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&o!==ji&&(f.push(t.assignTexture(a,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(a.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&o!==ji){const d=s.emissiveFactor;a.emissive=new Oe().setRGB(d[0],d[1],d[2],Vn)}return s.emissiveTexture!==void 0&&o!==ji&&f.push(t.assignTexture(a,"emissiveMap",s.emissiveTexture,qn)),Promise.all(f).then(function(){const d=new o(a);return s.name&&(d.name=s.name),uo(d,s),t.associations.set(d,{materials:e}),s.extensions&&ua(r,d,s),d})}createUniqueName(e){const t=Pt.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,i=this.extensions,r=this.primitiveCache;function s(a){return i[Ct.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a,t).then(function(u){return jE(u,a,t)})}const o=[];for(let a=0,u=e.length;a0&&c4(m,s),m.name=t.createUniqueName(s.name||"mesh_"+e),uo(m,s),_.extensions&&ua(r,m,_),t.assignFinalMaterial(m),d.push(m)}for(let v=0,y=d.length;v1?h=new Ps:f.length===1?h=f[0]:h=new Lt,h!==f[0])for(let d=0,p=f.length;d{const d=new Map;for(const[p,v]of r.associations)(p instanceof An||p instanceof Qt)&&d.set(p,v);return h.traverse(p=>{const v=r.associations.get(p);v!=null&&d.set(p,v)}),d};return r.associations=f(s),s})}_createAnimationTracks(e,t,i,r,s){const o=[],a=e.name?e.name:e.uuid,u=[];oo[s.path]===oo.weights?e.traverse(function(p){p.morphTargetInfluences&&u.push(p.name?p.name:p.uuid)}):u.push(a);let f;switch(oo[s.path]){case oo.weights:f=Ba;break;case oo.rotation:f=Do;break;case oo.position:case oo.scale:f=Ha;break;default:switch(i.itemSize){case 1:f=Ba;break;case 2:case 3:default:f=Ha;break}break}const h=r.interpolation!==void 0?a4[r.interpolation]:Fa,d=this._getArrayFromAccessor(i);for(let p=0,v=u.length;p{console.log("Ocean Clicked")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function r(){if(!n)return q.jsx("mesh",{position:[15,-12,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Try zooming in!",q.jsx(En,{distort:.1,speed:2,color:"hotpink"})]})})}function s(w){const _=ne.useRef();return q.jsx("group",{children:q.jsxs("mesh",{ref:_,children:[q.jsx(i,{}),q.jsx(o_,{})]})})}function o(){const w=pr($r,"./models/about.glb"),_=ne.useRef(),m=()=>{console.log("About Clicked"),window.open("https://oia20.github.io/PortfolioAbout/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function a(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(o,{})})})}function u(){const w=pr($r,"./models/git.glb"),_=ne.useRef(),m=()=>{console.log("Git Clicked"),window.open("https://github.com/Oia20","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function f(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(u,{})})})}function h(){const w=pr($r,"./models/linkedinn.glb"),_=ne.useRef(),m=()=>{console.log("Ocean Clicked"),window.open("https://www.linkedin.com/in/jacob-dement-35658b275/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function d(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(h,{})})})}function p(){const w=pr($r,"./models/Projects.glb"),_=ne.useRef(),m=()=>{window.open("https://oia20.github.io/Projects/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function v(w){const _=ne.useRef();return q.jsx("group",{children:q.jsxs("mesh",{ref:_,children:[q.jsx(p,{}),q.jsx(o_,{})]})})}const y=()=>{const w=ne.useRef!0;return q.jsxs(q.Fragment,{children:[q.jsx("directionalLight",{color:"blue",intensity:1,useRef:w,position:[10,5,10]}),q.jsx("directionalLight",{color:"whitesmoke",intensity:1,useRef:w,position:[10,5,10]})]})};return q.jsx(Gb,{style:{background:"linear-gradient(70deg, #201658, #1597E5, #201658)",position:"absolute",top:0,left:0,right:0,bottom:0},camera:{fov:90,position:[25,-8,20]},onWheel:t,children:q.jsxs(ne.Suspense,{fallback:g4,children:[q.jsx(Yb,{target:[0,-10,0],maxDistance:50,minDistance:1,enablePan:!1,maxPolarAngle:1.8,enableDamping:!0,enableRotate:!0,enableZoom:!0}),q.jsx("ambientLight",{intensity:.9}),q.jsx(kn,{scale:14,size:5,position:[0,-8,0],count:40}),q.jsx(kn,{scale:14,size:5,position:[11,-8,0],count:40}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,0],count:40}),q.jsx(kn,{scale:14,size:5,position:[0,-8,11],count:40}),q.jsx(kn,{scale:14,size:5,position:[0,-8,-11],count:40}),q.jsx(kn,{scale:14,size:5,position:[11,-8,11],count:40}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,11],count:40}),q.jsx(kn,{scale:14,size:5,position:[11,-8,-11],count:40}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,-11],count:40}),q.jsx(y,{}),q.jsxs(cu,{children:[q.jsx(s,{}),q.jsx(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.3,children:q.jsx(a,{})}),q.jsxs(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.4,children:[q.jsx(d,{}),q.jsx(v,{}),q.jsx(f,{})]}),q.jsx(qb,{}),q.jsx("mesh",{position:[-2,-9,16],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Github",q.jsx(En,{distort:.3,speed:2,color:"black"})]})}),q.jsx("mesh",{position:[-6,-3,19],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["LinkedIn",q.jsx(En,{distort:.2,speed:2,color:"blue"})]})}),q.jsx("mesh",{position:[13,-13,-4],rotation:[0,.8,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Projects",q.jsx(En,{distort:.2,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-9,-6,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Hi! I'm Jacob Dement!",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-7,-8,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["~ Software Developer",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-15,-6,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Click me or the boat",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-8,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["To travel to",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-10,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["my about page.",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-10,8,0],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["Click boat to travel to my room!",q.jsx(En,{distort:.1,speed:2,color:"whitesmoke"})]})}),q.jsx(r,{})]})]})})}function y4(){const{progress:n}=Wb();return q.jsx(Html,{center:!0,children:q.jsxs("h1",{children:[Math.ceil(n)," % loaded"]})})}function _4(){const[n,e]=ne.useState(!1);function t(){e(!0)}function i(){const w=pr($r,"./models/ocean.glb"),_=ne.useRef(),m=()=>{console.log("Ocean Clicked")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function r(w){const _=ne.useRef();return q.jsx("mesh",{ref:_,children:q.jsx(i,{})})}function s(){const w=pr($r,"./models/about.glb"),_=ne.useRef(),m=()=>{console.log("About Clicked"),window.open("https://oia20.github.io/PortfolioAbout/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function o(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(s,{})})})}function a(){const w=pr($r,"./models/git.glb"),_=ne.useRef(),m=()=>{console.log("Git Clicked"),window.open("https://github.com/Oia20","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function u(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(a,{})})})}function f(){const w=pr($r,"./models/linkedinn.glb"),_=ne.useRef(),m=()=>{console.log("Ocean Clicked"),window.open("https://www.linkedin.com/in/jacob-dement-35658b275/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function h(w){const _=ne.useRef();return q.jsx("group",{children:q.jsx("mesh",{ref:_,children:q.jsx(f,{})})})}function d(){if(!n)return q.jsx("mesh",{position:[15,0,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Try zooming in!",q.jsx(En,{distort:.1,speed:2,color:"hotpink"})]})})}function p(){const w=pr($r,"./models/Projects.glb"),_=ne.useRef(),m=()=>{window.open("https://oia20.github.io/Projects/","_blank")};return q.jsx("group",{ref:_,onClick:m,children:w.scene&&q.jsx("primitive",{object:w.scene})})}function v(w){const _=ne.useRef();return q.jsx("group",{children:q.jsxs("mesh",{ref:_,children:[q.jsx(p,{}),q.jsx(o_,{})]})})}const y=()=>{const w=ne.useRef!0;return q.jsxs(q.Fragment,{children:[q.jsx("directionalLight",{color:"blue",intensity:1,useRef:w,position:[10,5,10]}),q.jsx("directionalLight",{color:"whitesmoke",intensity:1,useRef:w,position:[10,5,10]})]})};return q.jsx(Gb,{style:{background:"linear-gradient(70deg, #201658, #1597E5, #201658)",position:"absolute",top:0,left:0,right:0,bottom:0},camera:{fov:120,position:[30,-8,20]},onClick:t,children:q.jsxs(ne.Suspense,{fallback:y4,children:[q.jsx(Yb,{target:[0,-10,0],maxDistance:50,minDistance:1,enablePan:!1,maxPolarAngle:2,enableDamping:!0,enableRotate:!0,enableZoom:!0}),q.jsx("ambientLight",{intensity:.9}),q.jsx(kn,{scale:14,size:5,position:[0,-8,0],count:20}),q.jsx(kn,{scale:14,size:5,position:[11,-8,0],count:20}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,0],count:20}),q.jsx(kn,{scale:14,size:5,position:[0,-8,11],count:20}),q.jsx(kn,{scale:14,size:5,position:[0,-8,-11],count:20}),q.jsx(kn,{scale:14,size:5,position:[11,-8,11],count:20}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,11],count:20}),q.jsx(kn,{scale:14,size:5,position:[11,-8,-11],count:20}),q.jsx(kn,{scale:14,size:5,position:[-11,-8,-11],count:20}),q.jsx(y,{}),q.jsxs(cu,{children:[q.jsx(r,{}),q.jsx(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.3,children:q.jsx(o,{})}),q.jsxs(cu,{floatIntensity:.5,floatingRange:.5,rotationIntensity:.4,children:[q.jsx(h,{}),q.jsx(v,{}),q.jsx(u,{})]}),q.jsx(qb,{count:750}),q.jsx("mesh",{position:[-2,-9,16],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Github",q.jsx(En,{distort:.3,speed:2,color:"black"})]})}),q.jsx("mesh",{position:[-6,-3,19],rotation:[0,1,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["LinkedIn",q.jsx(En,{distort:.2,speed:2,color:"blue"})]})}),q.jsx("mesh",{position:[13,-13,-4],rotation:[0,.8,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Projects",q.jsx(En,{distort:.2,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-9,-6,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Hi! I'm Jacob Dement!",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-7,-8,-8],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["~ Software Developer",q.jsx(En,{distort:.1,speed:2,color:"#ffff00"})]})}),q.jsx("mesh",{position:[-15,-6,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["Click me or the boat",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-8,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["To travel to",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx("mesh",{position:[-15,-10,16],rotation:[0,1.5,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1.5,children:["my about page.",q.jsx(En,{distort:.1,speed:2,color:"crimson"})]})}),q.jsx(d,{}),q.jsx("mesh",{position:[-10,8,0],rotation:[0,0,0],children:q.jsxs(wn,{font:"Oblygasi_Regular.json",size:1,children:["Click boat to travel to my room!",q.jsx(En,{distort:.1,speed:2,color:"whitesmoke"})]})})]})]})})}function x4(){return q.jsx(lC,{queries:{large:{minWidth:1e3},small:{maxWidth:999,minHeight:100}},children:n=>q.jsxs(ne.Fragment,{children:[n.large&&q.jsx(v4,{}),n.small&&q.jsx(_4,{})]})})}Mv.createRoot(document.getElementById("root")).render(q.jsx(q.Fragment,{children:q.jsx(x4,{})})); diff --git a/index.html b/index.html index f3bb186..32eb093 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Jacob Dement Portfolio - +