three_vrm加载美女三维模型眨眼说话手动起来动画效果代码
代码语言:html
所属分类:三维
代码描述:three_vrm加载美女三维模型眨眼说话手动起来动画效果代码
代码标签: three_vrm 加载 美女 三维 模型 眨眼 说话 手 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <style> body { margin: 0; } canvas { display: block; } </style> </head> <body> <script type="importmap"> { "imports": { "three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/164/three.module.js", "three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/", "@pixiv/three-vrm": "//repo.bfw.wiki/bfwrepo/js/three-vrm.module.3.0.0.js" } } </script> <script type="module"> import * as THREE from 'three'; import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import { VRMLoaderPlugin, VRMUtils } from '@pixiv/three-vrm'; // renderer const renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setPixelRatio( window.devicePixelRatio ); document.body.appendChild( renderer.domElement ); // camera const camera = new THREE.PerspectiveCamera( 30.0, window.innerWidth / window.innerHeight, 0.1, 20.0 ); // camera.position.set( 0.0, 1.0, 5.0 ); camera.position.set(3, 0.6, -8); // Adjust position to see the front // camera controls const controls = new OrbitControls( camera, renderer.domElement ); controls.screenSpacePanning = true; controls.target.set( 0.0, 1.0, 0.0 ); controls.update(); // scene const scene = new THREE.Scene(); // light const light = new THREE.DirectionalLight( 0xffffff, Math.PI ); light.position.set( 1.0, 1.0, 1.0 ).normalize(); scene.add( light ); // gltf and vrm let currentVrm = undefined; let currentMixer = undefined; const loader = new GLTFLoader(); loader.crossOrigin = 'anonymous'; loader.register( ( parser ) => { return new VRMLoaderPlugin( parser ); } ); loader.load( '//repo.bfw.wiki/bfwrepo/threemodel/girl.vrm', ( gltf ) => { const vrm = gltf.userData.vrm; // calling these functions greatly improves the performance VRMUtils.removeUnnecessaryVertices( gltf.scene ); VRMUtils.removeUnnecessaryJoints( gltf.scene ); // Disable frustum culling vrm.scene.traverse( ( obj ) => { obj.frustumCulled = false; } ); scene.add( vrm.scene ); currentVrm = vrm; prepareAnimation( vrm ); console.log( vrm ); }, ( progress ) => console.log( 'Loading model...', 100.0 * ( progress.loaded / progress.total ), '%' ), ( error ) => console.error( error ) ); // animation function prepareAnimation( vrm.........完整代码请登录后点击上方下载按钮下载查看
网友评论0