当前位置: 首页 > 知识库问答 >
问题:

我可以替换三部电影中使用的头像吗。js示例:你是一个拥有自己化身的人类吗?

仲孙飞文
2023-03-14

我试着用这三个。js示例将我的头像替换为我自己的头像。我研究了本例中使用的文件,不明白为什么不能替换它。我创建了一个带有变形目标(默认为1个变形目标)和骨架的化身。我将变形目标导出为变形动画,将骨架导出为骨骼动画(这似乎需要变形目标和骨骼动画才能工作)。当我在浏览器上打开javascript文件时,我只能看到dat gui控件,但不会显示化身。我怎样才能做到这一点?

其他文件:umich_ucs。js,UCSCharcater。js,UCS_配置。json,探测器。js,dat。桂。三分钟。min.js,轨道控制。js

jsfiddle:link

        var SCREEN_WIDTH = window.innerWidth;
        var SCREEN_HEIGHT = window.innerHeight;

        var container;

        var camera, scene;
        var renderer;

        var mesh;

        var mouseX = 0, mouseY = 0;

        var windowHalfX = window.innerWidth / 2;
        var windowHalfY = window.innerHeight / 2;

        var clock = new THREE.Clock();

        var gui, skinConfig, morphConfig;

        document.addEventListener( 'mousemove', onDocumentMouseMove, false );

        init();
        animate();

        function init() {

            container = document.getElementById( 'container' );

            camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 1, 100000 );
            camera.position.set( 2000, 5000, 5000 );

            scene = new THREE.Scene();

            // LIGHTS

            var light = new THREE.DirectionalLight( 0xffffff, 1 );
            light.position.set( 0, 140, 500 );
            light.position.multiplyScalar( 1.1 );
            light.color.setHSL( 0.6, 0.075, 1 );
            scene.add( light );

            //

            var light = new THREE.DirectionalLight( 0xffffff, 1 );
            light.position.set( 0, -1, 0 );
            scene.add( light );

            // RENDERER

            renderer = new THREE.WebGLRenderer( { antialias: true } );
            renderer.setClearColor( 0xffffff );
            renderer.setPixelRatio( window.devicePixelRatio );
            renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
            container.appendChild( renderer.domElement );

            // CHARACTER

            character = new THREE.UCSCharacter();
            character.onLoadComplete = function() {
                console.log( "Load Complete" );
                console.log( character.numSkins + " skins and " + character.numMorphs + " morphtargets loaded." );
                gui = new dat.GUI();
                setupSkinsGUI();
                setupMorphsGUI();
                gui.width = 300;
                gui.open();
            }

            var loader = new THREE.XHRLoader();
            loader.load("http://threejs.org/examples/models/skinned/UCS_config.json", function ( text ) {

                var config = JSON.parse( text );
                character.loadParts( config );
                scene.add( character.root );

            } );

            window.addEventListener( 'resize', onWindowResize, false );

            controls = new THREE.OrbitControls( camera, renderer.domElement );
            controls.center.set( 0, 3000, 0);

            controls.addEventListener( 'change', render );

        }

        function setupSkinsGUI() {

            var skinGui = gui.addFolder( "Skins" );

            skinConfig = {
                wireframe: false
            };

            var skinCallback = function( index ) {
                return function () {
                    character.setSkin( index );
                };
            }

            for ( var i = 0; i < character.numSkins; i++ ) {
                var name = character.skins[ i ].name;
                skinConfig[ name ] = skinCallback( i );
            }

            for ( var i = 0; i < character.numSkins; i++ ) {
                skinGui.add( skinConfig, character.skins[i].name );
            }

            skinGui.open();

        }

        function setupMorphsGUI() {

            var morphGui = gui.addFolder( "Morphs" );

            morphConfig = {
            };

            var morphCallback = function( index ) {
                return function () {
                    character.updateMorphs( morphConfig );
                }
            }

            for ( var i = 0; i < character.numMorphs; i ++ ) {
                var morphName = character.morphs[ i ];
                morphConfig[ morphName ] = 0;
            }

            for ( var i = 0; i < character.numMorphs; i ++ ) {
                morphGui.add( morphConfig, character.morphs[ i ] ).min( 0 ).max( 100 ).onChange( morphCallback( i ) );
            }

            morphGui.open();

        }

        function onWindowResize() {

            windowHalfX = window.innerWidth / 2;
            windowHalfY = window.innerHeight / 2;

            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();

            renderer.setSize( window.innerWidth, window.innerHeight );

        }

        function onDocumentMouseMove( event ) {

            mouseX = ( event.clientX - windowHalfX ) * 10;
            mouseY = ( event.clientY - windowHalfY ) * 10;

        }

        //

        function animate() {

            requestAnimationFrame( animate );

            controls.update();

            render();

        }

        function render() {

            var delta = 0.75 * clock.getDelta();

            // update skinning

            THREE.AnimationHandler.update( delta );

            renderer.render( scene, camera );

        }

共有1个答案

郜谦
2023-03-14

我已经弄明白了。问题是缩放。我的头像太大了,所以我看不到它显示在浏览器上。

 类似资料:
  • 问题内容: 我做了以下工作,一段时间后出现了stackoverflow错误,我知道为什么会这样。 但是,如果我没有在构造函数中创建新的Cat对象,而是采用Cat类型的参数并将其分配给insideCat字段,该怎么办? 我只是在玩弄代码,只是试图找出Java可以做什么和不能做什么。在第二个代码中,一切看起来都很正常,直到我开始测试该类为止。我需要一个Cat对象来创建Cat对象(要创建这个Cat对象,

  • 我遇到了这个问题,因为我有一个应用程序,有restful服务,但我需要提供一些静态的。在这个应用程序中,我还使用了注释。看起来这个类是公共的,我可以将其子类化,但我不确定如何配置它。我的目标是覆盖这条线,这样我就可以控制404。

  • 问题内容: 好吧,我该怎么做? 我想让一个模型具有对自身的外键引用。当我尝试创建此代码时,我收到django验证错误,该错误尚未定义Example。 问题答案: 你应该用

  • 我在SCJP6中读到抽象类不能实例化。但在某个地方读到它们可以实例化。是真的吗?我是Java的新手,希望有人能详细解释一下。一个例子也是很好的。

  • 问题内容: 假设我定义了一个类,该类具有与自己相同类型的变量作为成员。 这实际上有效,令我惊讶的是。 为什么我不应该这样:创建一个实例,它包含一个类型为的变量,其中包含一个类型为的变量,其中包含一个类型为的变量,..... 显然我错了,有人能启发我吗? 问题答案: 您仅声明变量而不创建它。尝试在声明或构造函数中创建它,让我知道会发生什么: 顺便说一句,如果您不是在类中创建它,而是在getter方法

  • 我试图构建一个实现Runnable的任务对象,该对象通过begin()方法生成一个新线程,将其自身用作线程中的Runnable对象? 然后... 这可能吗?或者抽象的可运行类在新线程中使用自己会有问题吗?