diff --git a/main.js b/main.js index 6a56e55..8c884aa 100644 --- a/main.js +++ b/main.js @@ -36,7 +36,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac \**********************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { -eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst THREE = __webpack_require__(/*! three */ \"./node_modules/three/build/three.cjs\");\nconst GLTFLoader_1 = __webpack_require__(/*! three/examples/jsm/loaders/GLTFLoader */ \"./node_modules/three/examples/jsm/loaders/GLTFLoader.js\");\nconst OrbitControls_1 = __webpack_require__(/*! three/examples/jsm/controls/OrbitControls */ \"./node_modules/three/examples/jsm/controls/OrbitControls.js\");\nconst three_vrm_1 = __webpack_require__(/*! @pixiv/three-vrm */ \"./node_modules/@pixiv/three-vrm/lib/three-vrm.module.js\");\nconst three_vrm_animation_1 = __webpack_require__(/*! @pixiv/three-vrm-animation */ \"./node_modules/@pixiv/three-vrm-animation/lib/three-vrm-animation.module.js\");\nconst three_1 = __webpack_require__(/*! three */ \"./node_modules/three/build/three.cjs\");\nconst RGBELoader_1 = __webpack_require__(/*! three/examples/jsm/loaders/RGBELoader */ \"./node_modules/three/examples/jsm/loaders/RGBELoader.js\");\n//import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';\n//import { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass';\n//import { RenderPass } from \"three/examples/jsm/postprocessing/RenderPass\";\n// https://github.com/pmndrs/postprocessing\nconst postprocessing_1 = __webpack_require__(/*! postprocessing */ \"./node_modules/postprocessing/build/index.cjs\");\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n var _a;\n // vrma\n let motion_enable = false;\n let head = null;\n // https://sbcode.net/threejs/progress-indicator\n let manager = new THREE.LoadingManager();\n let progressBar = document.getElementById('progressBar');\n // three\n const canvas = document.getElementById(\"canvas\");\n if (canvas == null)\n return;\n const scene = new THREE.Scene();\n //const camera = new THREE.PerspectiveCamera( 70, canvas.clientWidth/canvas.clientHeight, 0.1, 2000);\n const camera = new THREE.PerspectiveCamera(70, canvas.clientWidth / canvas.clientHeight, 0.1, 2000);\n camera.position.set(0, 1.5, -1.5);\n camera.rotation.set(0.0, Math.PI, 0.0);\n camera.lookAt(new THREE.Vector3(0, 0, 0));\n // https://threejs.org/docs/#api/en/constants/Renderer\n const renderer = new THREE.WebGLRenderer({\n alpha: true,\n powerPreference: \"high-performance\",\n antialias: true,\n stencil: false,\n //depth: false\n });\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(canvas.clientWidth, canvas.clientHeight);\n renderer.outputColorSpace = THREE.SRGBColorSpace;\n renderer.toneMapping = THREE.ReinhardToneMapping;\n renderer.toneMapping = THREE.NeutralToneMapping;\n canvas.appendChild(renderer.domElement);\n renderer.toneMappingExposure = 1.5;\n renderer.setClearColor(0xffffff, 1.0);\n const light = new THREE.DirectionalLight(0xffffff, Math.PI);\n light.position.set(1.0, 1.0, 1.0);\n //light.intensity = -0.8;\n //renderer.setClearColor(0x000000, 1.0);\n scene.add(light);\n let currentVrm = undefined;\n let currentVrmAnimation = undefined;\n let currentMixer = undefined;\n let percentComplete = null;\n function load(url) {\n loader.load(url, (gltf) => {\n tryInitVRM(gltf);\n tryInitVRMA(gltf);\n }, (xhr) => {\n percentComplete = (xhr.loaded / xhr.total) * 100;\n //progressBar.value = percentComplete === Infinity ? 100 : percentComplete\n }, (progress) => console.log(\"Loading model...\", 100.0 * (progress.loaded / progress.total), \"%\"), (error) => console.error(error));\n }\n function tryInitVRM(gltf) {\n const vrm = gltf.userData.vrm;\n if (vrm == null) {\n return;\n }\n currentVrm = vrm;\n scene.add(vrm.scene);\n initAnimationClip();\n }\n function tryInitVRMA(gltf) {\n var _a;\n const vrmAnimations = gltf.userData.vrmAnimations;\n if (vrmAnimations == null) {\n return;\n }\n currentVrmAnimation = (_a = vrmAnimations[0]) !== null && _a !== void 0 ? _a : null;\n initAnimationClip();\n }\n function initAnimationClip() {\n if (currentVrm && currentVrmAnimation) {\n currentMixer = new THREE.AnimationMixer(currentVrm.scene);\n const clip = (0, three_vrm_animation_1.createVRMAnimationClip)(currentVrmAnimation, currentVrm);\n currentMixer.clipAction(clip).play();\n }\n }\n const loader = new GLTFLoader_1.GLTFLoader(manager);\n loader.register((parser) => {\n return new three_vrm_1.VRMLoaderPlugin(parser);\n });\n loader.register((parser) => {\n return new three_vrm_animation_1.VRMAnimationLoaderPlugin(parser);\n });\n load(\"/vrma/ai.vrm\");\n load(\"/vrma/fly_c.vrma\");\n const clock = new THREE.Clock();\n clock.start();\n const controls = new OrbitControls_1.OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.dampingFactor = 0.2;\n controls.enableRotate = true;\n controls.target.set(0.0, 1.0, 0.0);\n //scene.background = new THREE.Color(0xffffff);\n const directionalLight = new THREE.DirectionalLight(0xffffff);\n directionalLight.position.set(1, 1, 1);\n //directionalLight.castShadow = true;\n //directionalLight.shadow.radius = 3.0;\n //renderer.shadowMap.enabled = true;\n //directionalLight.intensity = 0.3;\n scene.add(directionalLight);\n const ambientLight = new THREE.AmbientLight(0x333333);\n scene.add(ambientLight);\n let grid = new three_1.GridHelper(500, 1000, 0xffffff, 0xffffff);\n scene.add(grid);\n grid.position.set(Math.round(0), 0, Math.round(0));\n scene.fog = new three_1.Fog(0xffffff, 3, 20);\n (_a = scene.fog) === null || _a === void 0 ? void 0 : _a.color.set(0xffffff);\n onResize();\n window.addEventListener('resize', onResize);\n function onResize() {\n const width = window.innerWidth;\n const height = window.innerHeight;\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(width, height);\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let composer = new postprocessing_1.EffectComposer(renderer, {\n frameBufferType: three_1.HalfFloatType\n });\n composer.addPass(new postprocessing_1.RenderPass(scene, camera));\n composer.addPass(new postprocessing_1.EffectPass(camera, new postprocessing_1.BloomEffect()));\n function random_happy() {\n // https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/expressions.ja.md\n currentVrm.expressionManager.setValue('relaxed', 0.5);\n }\n function random_head() {\n // https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/lookAt.ja.md\n currentVrm.lookAt.target = camera;\n //currentVrm.VRMLookAtBoneApplier = camera;\n //currentVrm.VRMLookAtExpressionApplier = camera;\n // https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/humanoid.ja.md\n head = currentVrm.humanoid.getRawBoneNode(\"head\");\n head.target = camera;\n }\n function random_blink() {\n setInterval(() => {\n currentVrm.expressionManager.setValue('relaxed', 0);\n currentVrm.expressionManager.setValue('blink', 0);\n random_head();\n const r = Math.floor(Math.random() * 3);\n if (r == 1) {\n setTimeout(() => { currentVrm.expressionManager.setValue('blink', 1); }, 5000);\n setTimeout(() => {\n currentVrm.expressionManager.setValue('blink', 0);\n }, 5500);\n }\n ;\n setTimeout(() => {\n currentVrm.expressionManager.setValue('relaxed', 0.5);\n currentVrm.expressionManager.setValue('blink', 1);\n }, 6000);\n }, 6500);\n }\n random_blink();\n const el_light = document.querySelector('#btn-moon');\n if (el_light != null) {\n el_light.addEventListener('click', function () {\n light_s();\n });\n }\n let light_enable = 0;\n let light_max = 4;\n function light_s() {\n if (light_enable >= light_max) {\n light_enable = 0;\n }\n console.log(light_enable);\n switch (light_enable) {\n case 0:\n renderer.toneMapping = THREE.ACESFilmicToneMapping;\n light.intensity = -0.8;\n renderer.setClearColor(0x000000);\n scene.background = new THREE.Color(0x000000);\n scene.fog = new three_1.Fog(0x000000, 3, 20);\n break;\n case 1:\n renderer.toneMapping = THREE.NeutralToneMapping;\n light.intensity = 1;\n scene.background = new THREE.Color(0xffffff);\n renderer.setClearColor(0xffffff);\n scene.fog = new three_1.Fog(0xffffff, 3, 20);\n break;\n case 2:\n renderer.toneMapping = THREE.ReinhardToneMapping;\n break;\n case 3:\n renderer.toneMapping = THREE.ReinhardToneMapping;\n renderer.toneMapping = THREE.NeutralToneMapping;\n renderer.physicallyCorrectLights = true;\n light.intensity = 2;\n break;\n }\n light_enable++;\n }\n const el_user = document.querySelector('#btn-user');\n if (el_user != null) {\n el_user.addEventListener('click', function () {\n user_s();\n });\n }\n let user_enable = 0;\n let user_max = 2;\n let anime_id;\n function user_s() {\n if (user_enable >= user_max) {\n user_enable = 0;\n }\n console.log(user_enable);\n switch (user_enable) {\n case 0:\n load(\"/vrma/ai_eya.vrm\");\n scene.remove(currentVrm.scene);\n light.intensity = -0.8;\n renderer.setClearColor(0x000000);\n scene.remove(grid);\n scene.background = new THREE.Color(0x000000);\n scene.fog = new three_1.Fog(0x000000, 3, 20);\n requestAnimationFrame(function render() {\n anime_id = requestAnimationFrame(render);\n composer.render();\n });\n break;\n case 1:\n cancelAnimationFrame(anime_id);\n scene.add(grid);\n load(\"/vrma/ai.vrm\");\n scene.remove(currentVrm.scene);\n renderer.toneMapping = THREE.NeutralToneMapping;\n light.intensity = 1;\n scene.background = new THREE.Color(0xffffff);\n renderer.setClearColor(0xffffff);\n scene.fog = new three_1.Fog(0xffffff, 3, 20);\n break;\n }\n user_enable++;\n }\n const el_hdr = document.querySelector('#btn-sandar');\n if (el_hdr != null) {\n el_hdr.addEventListener('click', function () {\n hdr_s();\n });\n }\n let hdr_r = 0;\n function hdr_s() {\n if (hdr_r >= 2) {\n hdr_r = 0;\n }\n else {\n hdr_r++;\n }\n ;\n let hdr = \"/img/\" + hdr_r + \".hdr\";\n new RGBELoader_1.RGBELoader().load(hdr, function (texture) {\n texture.mapping = THREE.EquirectangularReflectionMapping;\n scene.background = texture;\n scene.environment = texture;\n });\n }\n function cool_time() {\n setTimeout(() => {\n motion_enable = false;\n }, 5000);\n }\n const el_sword = document.querySelector('#btn-sword');\n if (el_sword != null) {\n el_sword.addEventListener('click', function () {\n sword_s();\n });\n }\n function sword_s() {\n scene.remove(currentVrm.scene);\n load(\"/vrma/ai_sword.vrm\");\n load(\"/vrma/sword.vrma\");\n setTimeout(() => {\n load(\"/vrma/idle.vrma\");\n }, 1000);\n setTimeout(() => {\n load(\"/vrma/ai.vrm\");\n scene.remove(currentVrm.scene);\n }, 5000);\n }\n const el_cloud = document.querySelector('#btn-cloud');\n if (el_cloud != null) {\n el_cloud.addEventListener('click', function () {\n cloud_s();\n });\n }\n function cloud_s() {\n load(\"/vrma/sky.vrma\");\n setTimeout(() => {\n load(\"/vrma/jump.vrma\");\n }, 5000);\n setTimeout(() => {\n load(\"/vrma/idle.vrma\");\n }, 5500);\n }\n let mouse_ivent_timer_id;\n const el_run = document.querySelector('#btn-run');\n if (el_run != null) {\n el_run.addEventListener('mousedown', function () {\n mouse_ivent_timer_id = setTimeout(function () {\n motion_enable = true;\n }, 1000);\n load(\"/vrma/run.vrma\");\n });\n }\n document.querySelector('#btn-run').addEventListener('mouseup', (event) => {\n clearTimeout(mouse_ivent_timer_id);\n load(\"/vrma/idle.vrma\");\n cool_time();\n });\n const el_jump = document.querySelector('#btn-jump');\n if (el_jump != null) {\n el_jump.addEventListener('mousedown', function () {\n jump_s();\n });\n }\n function jump_s() {\n motion_enable = true;\n load(\"/vrma/jump.vrma\");\n setTimeout(() => {\n load(\"/vrma/idle.vrma\");\n }, 500);\n cool_time();\n }\n setInterval(() => {\n const r = Math.floor(Math.random() * 4 + 1);\n if (motion_enable == false) {\n load(\"/vrma/\" + r + \".vrma\");\n }\n setTimeout(() => {\n if (motion_enable == false) {\n load(\"/vrma/fly_c.vrma\");\n }\n }, 10000);\n }, 15000);\n animate();\n function animate() {\n controls.update();\n const delta = clock.getDelta();\n if (currentMixer) {\n currentMixer.update(delta);\n }\n if (currentVrm) {\n currentVrm.update(delta);\n }\n requestAnimationFrame(animate);\n scene.rotation.y += 0.005;\n renderer.render(scene, camera);\n }\n // https://threejs.org/docs/#api/en/loaders/managers/LoadingManager\n manager.onStart = function (url, itemsLoaded, itemsTotal) {\n //console.log( 'Started loading file: ' + url + '.\\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.' );\n progressBar.style.display = 'block';\n let percentComplete = (itemsLoaded / itemsTotal) * 100;\n progressBar.value = percentComplete === Infinity ? 100 : percentComplete;\n };\n manager.onLoad = function () {\n //console.log( 'Loading complete!');\n progressBar.style.display = 'none';\n };\n manager.onProgress = function (url, itemsLoaded, itemsTotal) {\n let percentComplete = (itemsLoaded / itemsTotal) * 100;\n progressBar.value = percentComplete === Infinity ? 100 : percentComplete;\n //console.log( 'Loading file: ' + url + '.\\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.' );\n };\n manager.onError = function (url) {\n //console.log( 'There was an error loading ' + url );\n progressBar.style.display = 'block';\n };\n});\n\n\n//# sourceURL=webpack://vrm/./src/index.ts?"); +eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst THREE = __webpack_require__(/*! three */ \"./node_modules/three/build/three.cjs\");\nconst GLTFLoader_1 = __webpack_require__(/*! three/examples/jsm/loaders/GLTFLoader */ \"./node_modules/three/examples/jsm/loaders/GLTFLoader.js\");\nconst OrbitControls_1 = __webpack_require__(/*! three/examples/jsm/controls/OrbitControls */ \"./node_modules/three/examples/jsm/controls/OrbitControls.js\");\nconst three_vrm_1 = __webpack_require__(/*! @pixiv/three-vrm */ \"./node_modules/@pixiv/three-vrm/lib/three-vrm.module.js\");\nconst three_vrm_animation_1 = __webpack_require__(/*! @pixiv/three-vrm-animation */ \"./node_modules/@pixiv/three-vrm-animation/lib/three-vrm-animation.module.js\");\nconst three_1 = __webpack_require__(/*! three */ \"./node_modules/three/build/three.cjs\");\nconst RGBELoader_1 = __webpack_require__(/*! three/examples/jsm/loaders/RGBELoader */ \"./node_modules/three/examples/jsm/loaders/RGBELoader.js\");\n//import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';\n//import { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass';\n//import { RenderPass } from \"three/examples/jsm/postprocessing/RenderPass\";\n// https://github.com/pmndrs/postprocessing\nconst postprocessing_1 = __webpack_require__(/*! postprocessing */ \"./node_modules/postprocessing/build/index.cjs\");\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n var _a;\n // vrma\n let motion_enable = false;\n let head = null;\n // https://sbcode.net/threejs/progress-indicator\n let manager = new THREE.LoadingManager();\n let progressBar = document.getElementById('progressBar');\n // three\n const canvas = document.getElementById(\"canvas\");\n if (canvas == null)\n return;\n const scene = new THREE.Scene();\n //const camera = new THREE.PerspectiveCamera( 70, canvas.clientWidth/canvas.clientHeight, 0.1, 2000);\n const camera = new THREE.PerspectiveCamera(70, canvas.clientWidth / canvas.clientHeight, 0.1, 2000);\n camera.position.set(0, 1.5, -1.5);\n camera.rotation.set(0.0, Math.PI, 0.0);\n camera.lookAt(new THREE.Vector3(0, 0, 0));\n // https://threejs.org/docs/#api/en/constants/Renderer\n const renderer = new THREE.WebGLRenderer({\n alpha: true,\n powerPreference: \"high-performance\",\n antialias: true,\n stencil: false,\n //depth: false\n });\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(canvas.clientWidth, canvas.clientHeight);\n renderer.outputColorSpace = THREE.SRGBColorSpace;\n renderer.toneMapping = THREE.ReinhardToneMapping;\n renderer.toneMapping = THREE.NeutralToneMapping;\n canvas.appendChild(renderer.domElement);\n renderer.toneMappingExposure = 1.5;\n renderer.setClearColor(0xffffff, 1.0);\n const light = new THREE.DirectionalLight(0xffffff, Math.PI);\n light.position.set(1.0, 1.0, 1.0);\n //light.intensity = -0.8;\n //renderer.setClearColor(0x000000, 1.0);\n scene.add(light);\n let currentVrm = undefined;\n let currentVrmAnimation = undefined;\n let currentMixer = undefined;\n let percentComplete = null;\n function load(url) {\n loader.load(url, (gltf) => {\n tryInitVRM(gltf);\n tryInitVRMA(gltf);\n }, (xhr) => {\n percentComplete = (xhr.loaded / xhr.total) * 100;\n //progressBar.value = percentComplete === Infinity ? 100 : percentComplete\n }, (progress) => console.log(\"Loading model...\", 100.0 * (progress.loaded / progress.total), \"%\"), (error) => console.error(error));\n }\n function tryInitVRM(gltf) {\n const vrm = gltf.userData.vrm;\n if (vrm == null) {\n return;\n }\n currentVrm = vrm;\n scene.add(vrm.scene);\n initAnimationClip();\n }\n function tryInitVRMA(gltf) {\n var _a;\n const vrmAnimations = gltf.userData.vrmAnimations;\n if (vrmAnimations == null) {\n return;\n }\n currentVrmAnimation = (_a = vrmAnimations[0]) !== null && _a !== void 0 ? _a : null;\n initAnimationClip();\n }\n function initAnimationClip() {\n if (currentVrm && currentVrmAnimation) {\n currentMixer = new THREE.AnimationMixer(currentVrm.scene);\n const clip = (0, three_vrm_animation_1.createVRMAnimationClip)(currentVrmAnimation, currentVrm);\n currentMixer.clipAction(clip).play();\n }\n }\n const loader = new GLTFLoader_1.GLTFLoader(manager);\n loader.register((parser) => {\n return new three_vrm_1.VRMLoaderPlugin(parser);\n });\n loader.register((parser) => {\n return new three_vrm_animation_1.VRMAnimationLoaderPlugin(parser);\n });\n load(\"/vrma/ai.vrm\");\n load(\"/vrma/fly_c.vrma\");\n const clock = new THREE.Clock();\n clock.start();\n const controls = new OrbitControls_1.OrbitControls(camera, renderer.domElement);\n controls.enableDamping = true;\n controls.dampingFactor = 0.2;\n controls.enableRotate = true;\n controls.target.set(0.0, 1.0, 0.0);\n //scene.background = new THREE.Color(0xffffff);\n const directionalLight = new THREE.DirectionalLight(0xffffff);\n directionalLight.position.set(1, 1, 1);\n //directionalLight.castShadow = true;\n //directionalLight.shadow.radius = 3.0;\n //renderer.shadowMap.enabled = true;\n //directionalLight.intensity = 0.3;\n scene.add(directionalLight);\n const ambientLight = new THREE.AmbientLight(0x333333);\n scene.add(ambientLight);\n let grid = new three_1.GridHelper(500, 1000, 0xffffff, 0xffffff);\n scene.add(grid);\n grid.position.set(Math.round(0), 0, Math.round(0));\n scene.fog = new three_1.Fog(0xffffff, 3, 20);\n (_a = scene.fog) === null || _a === void 0 ? void 0 : _a.color.set(0xffffff);\n onResize();\n window.addEventListener('resize', onResize);\n function onResize() {\n const width = window.innerWidth;\n const height = window.innerHeight;\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(width, height);\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let composer = new postprocessing_1.EffectComposer(renderer, {\n frameBufferType: three_1.HalfFloatType\n });\n composer.addPass(new postprocessing_1.RenderPass(scene, camera));\n composer.addPass(new postprocessing_1.EffectPass(camera, new postprocessing_1.BloomEffect()));\n function random_happy() {\n // https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/expressions.ja.md\n currentVrm.expressionManager.setValue('relaxed', 0.5);\n }\n function random_head() {\n // https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/lookAt.ja.md\n currentVrm.lookAt.target = camera;\n //currentVrm.VRMLookAtBoneApplier = camera;\n //currentVrm.VRMLookAtExpressionApplier = camera;\n // https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/humanoid.ja.md\n head = currentVrm.humanoid.getRawBoneNode(\"head\");\n head.target = camera;\n }\n function random_blink() {\n setInterval(() => {\n currentVrm.expressionManager.setValue('relaxed', 0);\n currentVrm.expressionManager.setValue('blink', 0);\n random_head();\n const r = Math.floor(Math.random() * 3);\n if (r == 1) {\n setTimeout(() => { currentVrm.expressionManager.setValue('blink', 1); }, 5000);\n setTimeout(() => {\n currentVrm.expressionManager.setValue('blink', 0);\n }, 5500);\n }\n ;\n setTimeout(() => {\n currentVrm.expressionManager.setValue('relaxed', 0.5);\n currentVrm.expressionManager.setValue('blink', 1);\n }, 6000);\n }, 6500);\n }\n random_blink();\n const el_light = document.querySelector('#btn-moon');\n if (el_light != null) {\n el_light.addEventListener('click', function () {\n light_s();\n });\n }\n let light_enable = 0;\n let light_max = 4;\n function light_s() {\n if (light_enable >= light_max) {\n light_enable = 0;\n }\n console.log(light_enable);\n switch (light_enable) {\n case 0:\n renderer.toneMapping = THREE.ACESFilmicToneMapping;\n light.intensity = -0.8;\n renderer.setClearColor(0x000000);\n scene.background = new THREE.Color(0x000000);\n scene.fog = new three_1.Fog(0x000000, 3, 20);\n break;\n case 1:\n renderer.toneMapping = THREE.NeutralToneMapping;\n light.intensity = 1;\n scene.background = new THREE.Color(0xffffff);\n renderer.setClearColor(0xffffff);\n scene.fog = new three_1.Fog(0xffffff, 3, 20);\n break;\n case 2:\n renderer.toneMapping = THREE.ReinhardToneMapping;\n break;\n case 3:\n renderer.toneMapping = THREE.ReinhardToneMapping;\n renderer.toneMapping = THREE.NeutralToneMapping;\n renderer.physicallyCorrectLights = true;\n light.intensity = 2;\n break;\n }\n light_enable++;\n }\n const el_user = document.querySelector('#btn-user');\n if (el_user != null) {\n el_user.addEventListener('click', function () {\n user_s();\n });\n }\n let user_enable = 0;\n let user_max = 3;\n let anime_id;\n function user_s() {\n if (user_enable >= user_max) {\n user_enable = 0;\n }\n console.log(user_enable);\n switch (user_enable) {\n case 0:\n light.intensity = -0.8;\n renderer.setClearColor(0x000000);\n scene.remove(grid);\n scene.background = new THREE.Color(0x000000);\n scene.fog = new three_1.Fog(0x000000, 3, 20);\n requestAnimationFrame(function render() {\n anime_id = requestAnimationFrame(render);\n composer.render();\n });\n break;\n case 1:\n cancelAnimationFrame(anime_id);\n scene.add(grid);\n load(\"/vrma/ai_normal.vrm\");\n scene.remove(currentVrm.scene);\n renderer.toneMapping = THREE.NeutralToneMapping;\n light.intensity = 1;\n scene.background = new THREE.Color(0xffffff);\n renderer.setClearColor(0xffffff);\n scene.fog = new three_1.Fog(0xffffff, 3, 20);\n break;\n case 2:\n load(\"/vrma/ai.vrm\");\n scene.remove(currentVrm.scene);\n break;\n }\n user_enable++;\n }\n const el_hdr = document.querySelector('#btn-sandar');\n if (el_hdr != null) {\n el_hdr.addEventListener('click', function () {\n hdr_s();\n });\n }\n let hdr_r = 0;\n function hdr_s() {\n if (hdr_r >= 2) {\n hdr_r = 0;\n }\n else {\n hdr_r++;\n }\n ;\n let hdr = \"/img/\" + hdr_r + \".hdr\";\n new RGBELoader_1.RGBELoader().load(hdr, function (texture) {\n texture.mapping = THREE.EquirectangularReflectionMapping;\n scene.background = texture;\n scene.environment = texture;\n });\n }\n function cool_time() {\n setTimeout(() => {\n motion_enable = false;\n }, 5000);\n }\n const el_sword = document.querySelector('#btn-sword');\n if (el_sword != null) {\n el_sword.addEventListener('click', function () {\n sword_s();\n });\n }\n function sword_s() {\n scene.remove(currentVrm.scene);\n load(\"/vrma/ai_sword.vrm\");\n load(\"/vrma/sword.vrma\");\n setTimeout(() => {\n load(\"/vrma/idle.vrma\");\n }, 1000);\n setTimeout(() => {\n load(\"/vrma/ai.vrm\");\n scene.remove(currentVrm.scene);\n }, 5000);\n }\n const el_cloud = document.querySelector('#btn-cloud');\n if (el_cloud != null) {\n el_cloud.addEventListener('click', function () {\n cloud_s();\n });\n }\n function cloud_s() {\n load(\"/vrma/sky.vrma\");\n setTimeout(() => {\n load(\"/vrma/jump.vrma\");\n }, 5000);\n setTimeout(() => {\n load(\"/vrma/idle.vrma\");\n }, 5500);\n }\n let mouse_ivent_timer_id;\n const el_run = document.querySelector('#btn-run');\n if (el_run != null) {\n el_run.addEventListener('mousedown', function () {\n mouse_ivent_timer_id = setTimeout(function () {\n motion_enable = true;\n }, 1000);\n load(\"/vrma/run.vrma\");\n });\n }\n document.querySelector('#btn-run').addEventListener('mouseup', (event) => {\n clearTimeout(mouse_ivent_timer_id);\n load(\"/vrma/idle.vrma\");\n cool_time();\n });\n const el_jump = document.querySelector('#btn-jump');\n if (el_jump != null) {\n el_jump.addEventListener('mousedown', function () {\n jump_s();\n });\n }\n function jump_s() {\n motion_enable = true;\n load(\"/vrma/jump.vrma\");\n setTimeout(() => {\n load(\"/vrma/idle.vrma\");\n }, 500);\n cool_time();\n }\n setInterval(() => {\n const r = Math.floor(Math.random() * 4 + 1);\n if (motion_enable == false) {\n load(\"/vrma/\" + r + \".vrma\");\n }\n setTimeout(() => {\n if (motion_enable == false) {\n load(\"/vrma/fly_c.vrma\");\n }\n }, 10000);\n }, 15000);\n animate();\n function animate() {\n controls.update();\n const delta = clock.getDelta();\n if (currentMixer) {\n currentMixer.update(delta);\n }\n if (currentVrm) {\n currentVrm.update(delta);\n }\n requestAnimationFrame(animate);\n scene.rotation.y += 0.005;\n renderer.render(scene, camera);\n }\n // https://threejs.org/docs/#api/en/loaders/managers/LoadingManager\n manager.onStart = function (url, itemsLoaded, itemsTotal) {\n //console.log( 'Started loading file: ' + url + '.\\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.' );\n progressBar.style.display = 'block';\n let percentComplete = (itemsLoaded / itemsTotal) * 100;\n progressBar.value = percentComplete === Infinity ? 100 : percentComplete;\n };\n manager.onLoad = function () {\n //console.log( 'Loading complete!');\n progressBar.style.display = 'none';\n };\n manager.onProgress = function (url, itemsLoaded, itemsTotal) {\n let percentComplete = (itemsLoaded / itemsTotal) * 100;\n progressBar.value = percentComplete === Infinity ? 100 : percentComplete;\n //console.log( 'Loading file: ' + url + '.\\nLoaded ' + itemsLoaded + ' of ' + itemsTotal + ' files.' );\n };\n manager.onError = function (url) {\n //console.log( 'There was an error loading ' + url );\n progressBar.style.display = 'block';\n };\n});\n\n\n//# sourceURL=webpack://vrm/./src/index.ts?"); /***/ }), diff --git a/vrma/ai.vrm b/vrma/ai.vrm index dd7b315..d8fb84c 100644 Binary files a/vrma/ai.vrm and b/vrma/ai.vrm differ diff --git a/vrma/ai_normal.vrm b/vrma/ai_normal.vrm new file mode 100644 index 0000000..5d98fac Binary files /dev/null and b/vrma/ai_normal.vrm differ