mirror of
				https://github.com/bartvdbraak/hellob.art.git
				synced 2025-10-31 12:19:10 +00:00 
			
		
		
		
	feat: add more 3d objects and add contrast
This commit is contained in:
		
							parent
							
								
									49e6393338
								
							
						
					
					
						commit
						8c5bbe2e77
					
				
					 14 changed files with 191 additions and 38 deletions
				
			
		|  | @ -27,9 +27,11 @@ | |||
| 			</p> | ||||
| 		</div> | ||||
| 		<div class="md:col-span-1 flex justify-end"> | ||||
| 			<Canvas> | ||||
| 				<Scene /> | ||||
| 			</Canvas> | ||||
| 			<div class="sm:h-60 w-full"> | ||||
| 				<Canvas> | ||||
| 					<Scene /> | ||||
| 				</Canvas> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,19 +5,40 @@ | |||
| 
 | ||||
| 	import { interactivity } from '@threlte/extras'; | ||||
| 	import { spring } from 'svelte/motion'; | ||||
| 	import GithubFluid from './models/GithubFluid.svelte'; | ||||
| 	import Warp from './models/Warp.svelte'; | ||||
| 	import TerraformFlat from './models/TerraformFlat.svelte'; | ||||
| 
 | ||||
| 	interactivity(); | ||||
| 	const scale = spring(1); | ||||
| 
 | ||||
| 	let rotation = 0; | ||||
| 	const githubScale = spring(1); | ||||
| 	let githubRotation = 0; | ||||
| 	useFrame((state, delta) => { | ||||
| 		rotation += delta; | ||||
| 		githubRotation += 0.5 * delta; | ||||
| 	}); | ||||
| 
 | ||||
| 	const kubernetesScale = spring(1); | ||||
| 	let kubernetesRotation = 30; | ||||
| 	useFrame((state, delta) => { | ||||
| 		kubernetesRotation += 0.3 * delta; | ||||
| 	}); | ||||
| 
 | ||||
| 	const warpScale = spring(1); | ||||
| 	let warpRotation = 10; | ||||
| 	useFrame((state, delta) => { | ||||
| 		warpRotation += 0.2 * delta; | ||||
| 	}); | ||||
| 
 | ||||
| 	const terraformScale = spring(1); | ||||
| 	let terraformRotation = 90; | ||||
| 	useFrame((state, delta) => { | ||||
| 		terraformRotation += 0.6 * delta; | ||||
| 	}); | ||||
| </script> | ||||
| 
 | ||||
| <T.PerspectiveCamera | ||||
| 	makeDefault | ||||
| 	position={[10, 10, 10]} | ||||
| 	position={[10, 5, 8]} | ||||
| 	on:create={({ ref }) => { | ||||
| 		ref.lookAt(0, 1, 0); | ||||
| 	}} | ||||
|  | @ -26,12 +47,51 @@ | |||
| <T.AmbientLight intensity={0.9} /> | ||||
| <Float floatIntensity={2} floatingRange={[0, 1]}> | ||||
| 	<Kubernetes | ||||
| 		rotation.y={rotation} | ||||
| 		position.y={-1} | ||||
| 		rotation.y={kubernetesRotation} | ||||
| 		position.y={-4} | ||||
| 		position.z={-2} | ||||
| 		position.x={-1} | ||||
| 		scale={$scale} | ||||
| 		on:pointerenter={() => scale.set(1.5)} | ||||
| 		on:pointerleave={() => scale.set(1)} | ||||
| 		position.x={-4} | ||||
| 		scale={$kubernetesScale} | ||||
| 		on:pointerenter={() => kubernetesScale.set(1.3)} | ||||
| 		on:pointerleave={() => kubernetesScale.set(1)} | ||||
| 	/> | ||||
| </Float> | ||||
| 
 | ||||
| <Float floatIntensity={2} floatingRange={[0, 0.5]}> | ||||
| 	<GithubFluid | ||||
| 		rotation.y={githubRotation} | ||||
| 		position.y={0} | ||||
| 		position.z={-4} | ||||
| 		position.x={3} | ||||
| 		scale={$githubScale} | ||||
| 		on:pointerenter={() => githubScale.set(1.3)} | ||||
| 		on:pointerleave={() => githubScale.set(1)} | ||||
| 	/> | ||||
| </Float> | ||||
| 
 | ||||
| <Float floatIntensity={2} floatingRange={[0.2, 0.3]}> | ||||
| 	<Warp | ||||
| 		rotation.y={warpRotation} | ||||
| 		position.y={0} | ||||
| 		position.z={2} | ||||
| 		position.x={-8} | ||||
| 		scale={$warpScale} | ||||
| 		on:pointerenter={() => warpScale.set(1.3)} | ||||
| 		on:pointerleave={() => warpScale.set(1)} | ||||
| 	/> | ||||
| </Float> | ||||
| 
 | ||||
| <Float floatIntensity={2} floatingRange={[0.2, 0.3]}> | ||||
| 	<TerraformFlat | ||||
| 		rotation.y={terraformRotation} | ||||
| 		position.y={-2} | ||||
| 		position.z={-4} | ||||
| 		position.x={-6} | ||||
| 		scale={$terraformScale} | ||||
| 		on:pointerenter={() => terraformScale.set(1.3)} | ||||
| 		on:pointerleave={() => terraformScale.set(1)} | ||||
| 	/> | ||||
| </Float> | ||||
| 
 | ||||
| <!-- <T.AxesHelper></T.AxesHelper> | ||||
| <T.GridHelper></T.GridHelper> --> | ||||
|  |  | |||
							
								
								
									
										46
									
								
								src/routes/toolbox/models/GithubFluid.svelte
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/routes/toolbox/models/GithubFluid.svelte
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,46 @@ | |||
| <!-- | ||||
| Auto-generated by: https://github.com/threlte/threlte/tree/main/packages/gltf | ||||
| Command: npx @threlte/gltf@1.0.0-next.13 ./static/models/github-fluid.glb --transform | ||||
| --> | ||||
| 
 | ||||
| <script> | ||||
| 	import { Group } from 'three'; | ||||
| 	import { T, forwardEventHandlers } from '@threlte/core'; | ||||
| 	import { useGltf } from '@threlte/extras'; | ||||
| 
 | ||||
| 	export const ref = new Group(); | ||||
| 	const initialScale = 30; | ||||
| 
 | ||||
| 	const gltf = useGltf('/models/github-fluid-transformed.glb', { useDraco: true }); | ||||
| 
 | ||||
| 	const component = forwardEventHandlers(); | ||||
| </script> | ||||
| 
 | ||||
| <T is={ref} dispose={false} {...$$restProps} bind:this={$component}> | ||||
| 	{#await gltf} | ||||
| 		<slot name="fallback" /> | ||||
| 	{:then gltf} | ||||
| 		<T.Mesh | ||||
| 			geometry={gltf.nodes.circle4.geometry} | ||||
| 			material={gltf.materials['SVGMat.010']} | ||||
| 			position={[0.0 * initialScale, 0.0 * initialScale, 0 * initialScale]} | ||||
| 			rotation={[Math.PI / 2, 0, 0]} | ||||
| 			scale={initialScale} | ||||
| 		/> | ||||
| 		<T.Mesh | ||||
| 			geometry={gltf.nodes.path4.geometry} | ||||
| 			material={gltf.materials['SVGMat.012']} | ||||
| 			position={[-0.017 * initialScale, -0.02 * initialScale, 0 * initialScale]} | ||||
| 			rotation={[Math.PI / 2, 0, 0]} | ||||
| 			scale={initialScale} | ||||
| 		/> | ||||
| 	{:catch error} | ||||
| 		<slot name="error" {error} /> | ||||
| 	{/await} | ||||
| 
 | ||||
| 	<slot {ref} /> | ||||
| </T> | ||||
| 
 | ||||
| <!-- position={[0.06 * initialScale, 0.06 * initialScale, 0 * initialScale]} | ||||
| 
 | ||||
| position={[0.045 * initialScale, 0.04 * initialScale, 0 * initialScale]} --> | ||||
|  | @ -3,12 +3,19 @@ Auto-generated by: https://github.com/threlte/threlte/tree/main/packages/gltf | |||
| Command: npx @threlte/gltf@1.0.0-next.13 ./static/models/terraform-flat.glb --transform | ||||
| --> | ||||
| 
 | ||||
| <script> | ||||
| <script lang="ts"> | ||||
| 	import { Group } from 'three'; | ||||
| 	import { T, forwardEventHandlers } from '@threlte/core'; | ||||
| 	import { useGltf } from '@threlte/extras'; | ||||
| 
 | ||||
| 	export const ref = new Group(); | ||||
| 	const initialScale = 30; | ||||
| 	const offsetOrigin: [number, number, number] = [-0.1, 0, -0.034]; | ||||
| 	const multipliedOffset: [number, number, number] = [ | ||||
| 		offsetOrigin[0] * initialScale, | ||||
| 		offsetOrigin[1] * initialScale, | ||||
| 		offsetOrigin[2] * initialScale | ||||
| 	]; | ||||
| 
 | ||||
| 	const gltf = useGltf('/models/terraform-flat-transformed.glb', { useDraco: true }); | ||||
| 
 | ||||
|  | @ -20,8 +27,18 @@ Command: npx @threlte/gltf@1.0.0-next.13 ./static/models/terraform-flat.glb --tr | |||
| 		<slot name="fallback" /> | ||||
| 	{:then gltf} | ||||
| 		<T.Group rotation={[Math.PI / 2, 0, 5]}> | ||||
| 			<T.Mesh geometry={gltf.nodes.Curve_1.geometry} material={gltf.materials.SVGMat} /> | ||||
| 			<T.Mesh geometry={gltf.nodes.Curve_2.geometry} material={gltf.materials['SVGMat.001']} /> | ||||
| 			<T.Mesh | ||||
| 				geometry={gltf.nodes.Curve_1.geometry} | ||||
| 				material={gltf.materials.SVGMat} | ||||
| 				position={multipliedOffset} | ||||
| 				scale={initialScale} | ||||
| 			/> | ||||
| 			<T.Mesh | ||||
| 				geometry={gltf.nodes.Curve_2.geometry} | ||||
| 				material={gltf.materials['SVGMat.001']} | ||||
| 				position={multipliedOffset} | ||||
| 				scale={initialScale} | ||||
| 			/> | ||||
| 		</T.Group> | ||||
| 	{:catch error} | ||||
| 		<slot name="error" {error} /> | ||||
|  |  | |||
|  | @ -3,12 +3,19 @@ Auto-generated by: https://github.com/threlte/threlte/tree/main/packages/gltf | |||
| Command: npx @threlte/gltf@1.0.0-next.13 ./static/models/warp.glb --transform | ||||
| --> | ||||
| 
 | ||||
| <script> | ||||
| <script lang="ts"> | ||||
| 	import { Group } from 'three'; | ||||
| 	import { T, forwardEventHandlers } from '@threlte/core'; | ||||
| 	import { useGltf } from '@threlte/extras'; | ||||
| 
 | ||||
| 	export const ref = new Group(); | ||||
| 	const initialScale = 20; | ||||
| 	const offsetOrigin: [number, number, number] = [-0.1, 0, -0.034]; | ||||
| 	const multipliedOffset: [number, number, number] = [ | ||||
| 		offsetOrigin[0] * initialScale, | ||||
| 		offsetOrigin[1] * initialScale, | ||||
| 		offsetOrigin[2] * initialScale | ||||
| 	]; | ||||
| 
 | ||||
| 	const gltf = useGltf('/models/warp-transformed.glb', { useDraco: true }); | ||||
| 
 | ||||
|  | @ -23,11 +30,15 @@ Command: npx @threlte/gltf@1.0.0-next.13 ./static/models/warp.glb --transform | |||
| 			geometry={gltf.nodes.Warp.geometry} | ||||
| 			material={gltf.materials.SVGMat} | ||||
| 			rotation={[Math.PI / 2, 0, 0.3]} | ||||
| 			position={multipliedOffset} | ||||
| 			scale={initialScale} | ||||
| 		/> | ||||
| 		<T.Mesh | ||||
| 			geometry={gltf.nodes.Warp001.geometry} | ||||
| 			material={gltf.materials.Gradient} | ||||
| 			rotation={[Math.PI / 2, 0, 0.3]} | ||||
| 			position={multipliedOffset} | ||||
| 			scale={initialScale} | ||||
| 		/> | ||||
| 	{:catch error} | ||||
| 		<slot name="error" {error} /> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue