remove unused file.

This commit is contained in:
Syoyo Fujita
2024-08-17 06:10:58 +09:00
parent cf70e4c541
commit 177af53e46
36 changed files with 1 additions and 589 deletions

View File

@@ -1,3 +1,4 @@
// W.I.P.
// Based on GLTFLoader and USDZLoader
// https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/USDZLoader.js
// https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/GLTFLoader.js

View File

@@ -1,16 +0,0 @@
let TinyUSDZ = null;
const TINYUSDZ_PATH = './tinyusdz.js';
async function TinyUSDZLoader() {
if ( TinyUSDZ === null ) {
const { default: initTinyUSDZ } = await import( TINYUSDZ_PATH );
TinyUSDZ = await initTinyUSDZ();
}
console.log( TinyUSDZ );
}
export { TinyUSDZLoader };

View File

@@ -1,2 +0,0 @@
based on threejs-starter-bun https://github.com/j1m-ryan/threejs-starter-bun
(MIT license)

View File

@@ -1,14 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="./src/style.css" />
<link rel="stylesheet" type="text/css" href="./src/reset.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ThreeJS Starter</title>
</head>
<body>
<script type="module" src="/src/main.ts"></script>
<canvas id="c"></canvas>
</body>
</html>

View File

@@ -1,24 +0,0 @@
{
"name": "simple-threejs-tinyusdzloader-demo",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"devDependencies": {
"@types/three": "^0.160.0",
"typescript": "^5.2.2",
"vite": "^5.0.8",
"@types/bun": "latest"
},
"dependencies": {
"gsap": "^3.12.4",
"lil-gui": "^0.19.1",
"stats.js": "^0.17.0",
"three": "^0.160.0"
},
"module": "index.ts"
}

View File

@@ -1,11 +0,0 @@
import * as THREE from "three";
import { cameraFolder } from "./lilgui";
const camera = new THREE.PerspectiveCamera(75, 2, 0.1, 100);
camera.position.z = 2;
cameraFolder.add(camera.position, "x").min(-3).max(3).step(0.001).name("X");
cameraFolder.add(camera.position, "y").min(-3).max(3).step(0.001).name("Y");
cameraFolder.add(camera.position, "z").min(-3).max(3).step(0.001).name("Z");
export default camera;

View File

@@ -1,3 +0,0 @@
const canvas = document.getElementById("c") as HTMLCanvasElement;
export default canvas;

View File

@@ -1,8 +0,0 @@
import { OrbitControls } from "three/examples/jsm/Addons.js";
import camera from "./camera";
import canvas from "./canvas";
const controls = new OrbitControls(camera, canvas);
controls.enableDamping = true;
export default controls;

View File

@@ -1,5 +0,0 @@
import * as THREE from "three";
const axesHelper = new THREE.AxesHelper();
export default axesHelper;

View File

@@ -1,14 +0,0 @@
import * as THREE from "three";
import { directionalLight, hemisphereLight } from "../lights";
const hemisphereLightHelper = new THREE.HemisphereLightHelper(
hemisphereLight,
0.1
);
const directionalLightHelper = new THREE.DirectionalLightHelper(
directionalLight,
0.3
);
export { hemisphereLightHelper, directionalLightHelper };

View File

@@ -1,9 +0,0 @@
import * as THREE from "three";
import { directionalLight } from "../lights";
const directionalLightShadowCameraHelper = new THREE.CameraHelper(
directionalLight.shadow.camera
);
export { directionalLightShadowCameraHelper };

View File

@@ -1,56 +0,0 @@
import * as THREE from "three";
import {
directionalLightFolder,
ambientLightFolder,
hemisphereLightFolder,
} from "./lilgui";
const ambientLight = new THREE.AmbientLight("white", 1);
ambientLightFolder
.add(ambientLight, "intensity")
.min(0)
.max(5)
.step(0.01)
.name("Intensity");
const hemisphereLight = new THREE.HemisphereLight("white", "green", 1);
hemisphereLightFolder
.add(hemisphereLight, "intensity")
.min(0)
.max(10)
.step(0.01)
.name("Intensity");
const directionalLight = new THREE.DirectionalLight("white", 2);
directionalLight.position.set(2, 2, 2);
directionalLightFolder
.add(directionalLight, "intensity")
.min(0)
.max(10)
.step(0.01)
.name("Intensity");
directionalLight.castShadow = true;
directionalLight.shadow.camera.far = 10;
const directionalLightShadowMapSizeResolution = 2048;
directionalLight.shadow.mapSize.set(
directionalLightShadowMapSizeResolution,
directionalLightShadowMapSizeResolution
);
directionalLightFolder
.add(
directionalLight.shadow.mapSize,
"x",
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048]
)
.onChange((v: number) => {
directionalLight.shadow.mapSize.y = v;
directionalLight.shadow.map && directionalLight.shadow.map.dispose();
directionalLight.shadow.map = null;
})
.name("Shadow Map Resolution");
export { ambientLight, hemisphereLight, directionalLight };

View File

@@ -1,22 +0,0 @@
import GUI from "lil-gui";
const gui = new GUI({
title: "ThreeJS Starter Bun",
});
const cubeFolder = gui.addFolder("Cube");
const cameraFolder = gui.addFolder("Camera");
const lightsFolder = gui.addFolder("Lights");
const directionalLightFolder = lightsFolder.addFolder("Directional Light");
const ambientLightFolder = lightsFolder.addFolder("Ambient Light");
const hemisphereLightFolder = lightsFolder.addFolder("Hemisphere Light");
export {
cubeFolder,
cameraFolder,
lightsFolder,
directionalLightFolder,
hemisphereLightFolder,
ambientLightFolder,
};

View File

@@ -1,18 +0,0 @@
import * as THREE from "three";
const onLoad = () => {
console.log("loaded");
};
const onProgress = (url: string, loaded: number, total: number) => {
console.log(`Loading URL: ${url}`);
console.log(`Percent loaded: ${(100 * loaded) / total}%`);
};
const onError = (url: string) => {
console.error(`Error loading: ${url}`);
};
const loadingManager = new THREE.LoadingManager(onLoad, onProgress, onError);
const textureLoader = new THREE.TextureLoader(loadingManager);
export { textureLoader };

View File

@@ -1,41 +0,0 @@
import { createDoubleClickListener } from "./utils/fullscreen";
import scene from "./scene";
import canvas from "./canvas";
import cube from "./meshes/cube";
import { ambientLight, directionalLight, hemisphereLight } from "./lights";
import { tick } from "./timer";
import sphere from "./meshes/sphere";
import torus from "./meshes/torus";
import floor from "./meshes/floor";
import axesHelper from "./helpers/axesHelper";
import {
directionalLightHelper,
hemisphereLightHelper,
} from "./helpers/lightHelpers";
import { directionalLightShadowCameraHelper } from "./helpers/shadowCameraHelpers";
function main() {
// Meshes
scene.add(cube);
scene.add(sphere);
scene.add(torus);
scene.add(floor);
// Lights
scene.add(ambientLight);
scene.add(hemisphereLight);
scene.add(directionalLight);
// Helpers
scene.add(axesHelper);
scene.add(hemisphereLightHelper);
scene.add(directionalLightHelper);
scene.add(directionalLightShadowCameraHelper);
// EventListeners
createDoubleClickListener(canvas);
tick();
}
main();

View File

@@ -1,51 +0,0 @@
import * as THREE from "three";
import { cubeFolder } from "../lilgui";
import gsap from "gsap";
import { cubeMaterial } from "../shared/materials";
const cubeProperties = {
subdivisions: 20,
animation: () => {},
};
cubeFolder.add(cubeMaterial, "wireframe");
const geometry = new THREE.BoxGeometry(
1,
1,
1,
cubeProperties.subdivisions,
cubeProperties.subdivisions,
cubeProperties.subdivisions
);
const cube = new THREE.Mesh(geometry, cubeMaterial);
cubeFolder.add(cube.position, "y").min(-3).max(3).step(0.1).name("elevation");
cube.castShadow = true;
cubeFolder
.add(cubeProperties, "subdivisions")
.min(1)
.max(20)
.step(1)
.onFinishChange(() => {
cube.geometry.dispose();
cube.geometry = new THREE.BoxGeometry(
1,
1,
1,
cubeProperties.subdivisions,
cubeProperties.subdivisions,
cubeProperties.subdivisions
);
});
cubeProperties.animation = () => {
gsap.to(cube.rotation, { x: cube.rotation.x + Math.PI });
};
cubeFolder.add(cubeProperties, "animation").name("roll");
cubeFolder.add(cube, "visible");
export default cube;

View File

@@ -1,13 +0,0 @@
import * as THREE from "three";
import { floorMaterial } from "../shared/materials";
const geometry = new THREE.PlaneGeometry(20, 20, 20);
const floor = new THREE.Mesh(geometry, floorMaterial);
floor.rotation.x = Math.PI / 2;
floor.position.y = -2;
floor.receiveShadow = true;
export default floor;

View File

@@ -1,11 +0,0 @@
import * as THREE from "three";
import { earthMaterial } from "../shared/materials";
const geometry = new THREE.SphereGeometry(0.5, 20, 20);
const sphere = new THREE.Mesh(geometry, earthMaterial);
sphere.position.x = -2;
sphere.castShadow = true;
export default sphere;

View File

@@ -1,10 +0,0 @@
import * as THREE from "three";
import { normalMaterial } from "../shared/materials";
const geometry = new THREE.TorusGeometry(0.3, 0.1, 20);
const torus = new THREE.Mesh(geometry, normalMaterial);
torus.position.x = 2;
torus.castShadow = true;
export default torus;

View File

@@ -1,9 +0,0 @@
import * as THREE from "three";
import canvas from "./canvas";
const renderer = new THREE.WebGLRenderer({ antialias: true, canvas });
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
export default renderer;

View File

@@ -1,62 +0,0 @@
/*
1. Use a more-intuitive box-sizing model.
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
/*
2. Remove default margin
*/
* {
margin: 0;
}
/*
Typographic tweaks!
3. Add accessible line-height
4. Improve text rendering
*/
body {
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
/*
5. Improve media defaults
*/
img,
picture,
video,
canvas,
svg {
display: block;
max-width: 100%;
}
/*
6. Remove built-in form typography styles
*/
input,
button,
textarea,
select {
font: inherit;
}
/*
7. Avoid text overflows
*/
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
/*
8. Create a root stacking context
*/
#root,
#__next {
isolation: isolate;
}

View File

@@ -1,5 +0,0 @@
import * as THREE from "three";
const scene = new THREE.Scene();
export default scene;

View File

@@ -1,29 +0,0 @@
import * as THREE from "three";
import { cobbleDiffTexture, earthTexture, woodTexture } from "./textures";
const cubeMaterial = new THREE.MeshStandardMaterial({
map: woodTexture,
});
cubeMaterial.side = THREE.DoubleSide;
const floorMaterial = new THREE.MeshStandardMaterial({
map: cobbleDiffTexture,
displacementMap: cobbleDiffTexture,
displacementScale: 1.2,
});
floorMaterial.side = THREE.DoubleSide;
if (floorMaterial.map) {
floorMaterial.map.repeat.set(8, 8);
floorMaterial.map.wrapS = THREE.RepeatWrapping;
floorMaterial.map.wrapT = THREE.RepeatWrapping;
}
const normalMaterial = new THREE.MeshNormalMaterial();
const earthMaterial = new THREE.MeshStandardMaterial({
map: earthTexture,
});
export { cubeMaterial, floorMaterial, normalMaterial, earthMaterial };

View File

@@ -1,29 +0,0 @@
import * as THREE from "three";
import { textureLoader } from "../loadingManager";
import woodImage from "../../static/textures/wood/wood_floor_worn_diff_1k.jpg";
import cobbleDiff from "../../static/textures/cobble/grassy_cobblestone_diff_1k.jpg";
import cobbleDisp from "../../static/textures/cobble/grassy_cobblestone_disp_1k.png";
import cobbleMask from "../../static/textures/cobble/grassy_cobblestone_mask_1k.png";
import earth from "../../static/textures/earth/earth.jpg";
const woodTexture = textureLoader.load(woodImage);
woodTexture.colorSpace = THREE.SRGBColorSpace;
const cobbleDiffTexture = textureLoader.load(cobbleDiff);
cobbleDiffTexture.colorSpace = THREE.SRGBColorSpace;
const cobbleDispTexture = textureLoader.load(cobbleDisp);
const cobbleMaskTexture = textureLoader.load(cobbleMask);
const earthTexture = textureLoader.load(earth);
earthTexture.colorSpace = THREE.SRGBColorSpace;
export {
woodTexture,
cobbleDiffTexture,
cobbleDispTexture,
cobbleMaskTexture,
earthTexture,
};

View File

@@ -1,12 +0,0 @@
#c {
height: 100vh;
width: 100vw;
}
* {
outline: none;
}
body {
overflow: hidden;
}

View File

@@ -1,35 +0,0 @@
import { Timer } from "three/examples/jsm/misc/Timer.js";
import { resizeRendererToDisplaySize } from "./utils/resize";
import cube from "./meshes/cube";
import sphere from "./meshes/sphere";
import torus from "./meshes/torus";
import renderer from "./renderer";
import camera from "./camera";
import scene from "./scene";
import controls from "./controls";
import stats from "./utils/stats";
const timer = new Timer();
export default timer;
export const tick = () => {
stats.begin();
const elapsedTime = timer.getElapsed();
timer.update();
cube.rotation.y = elapsedTime * 0.5;
sphere.rotation.y = elapsedTime * 0.5;
torus.rotation.y = elapsedTime * 0.5;
if (resizeRendererToDisplaySize(renderer)) {
const canvas = renderer.domElement;
camera.aspect = canvas.clientWidth / canvas.clientHeight;
camera.updateProjectionMatrix();
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
}
renderer.render(scene, camera);
controls.update();
stats.end();
requestAnimationFrame(tick);
};

View File

@@ -1,36 +0,0 @@
declare global {
interface Document {
mozCancelFullScreen?: () => Promise<void>;
msExitFullscreen?: () => Promise<void>;
webkitExitFullscreen?: () => Promise<void>;
mozFullScreenElement?: Element;
msFullscreenElement?: Element;
webkitFullscreenElement?: Element;
}
interface HTMLElement {
msRequestFullscreen?: () => Promise<void>;
mozRequestFullscreen?: () => Promise<void>;
webkitRequestFullscreen?: () => Promise<void>;
}
}
const createDoubleClickListener = (canvas: HTMLCanvasElement) => {
window.addEventListener("dblclick", () => {
const fullScreenElement =
document.fullscreenElement || document.webkitFullscreenElement;
if (!fullScreenElement) {
if (canvas.requestFullscreen) {
canvas.requestFullscreen();
} else if (canvas.webkitRequestFullscreen) {
// Does not work on safari mobile
canvas.webkitRequestFullscreen();
}
} else {
document.exitFullscreen();
}
});
};
export { createDoubleClickListener };

View File

@@ -1,12 +0,0 @@
function resizeRendererToDisplaySize(renderer: THREE.WebGLRenderer) {
const canvas = renderer.domElement;
const width = canvas.clientWidth;
const height = canvas.clientHeight;
const needResize = canvas.width !== width || canvas.height !== height;
if (needResize) {
renderer.setSize(width, height, false);
}
return needResize;
}
export { resizeRendererToDisplaySize };

View File

@@ -1,8 +0,0 @@
import Stats from "stats.js";
const stats = new Stats();
stats.showPanel(0);
document.body.appendChild(stats.dom);
export default stats;

View File

@@ -1 +0,0 @@
/// <reference types="vite/client" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 725 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 614 KiB

View File

@@ -1,23 +0,0 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
"include": ["src"]
}