小編最近根據(jù)項目需求需要加載FBX模型凛虽,剛開始呢只需要部分模型,于是小編就每個模型加載一次偿短,隨著模型數(shù)據(jù)越來越多欣孤,開始后面發(fā)現(xiàn)電腦開始嗡嗡的想,手機也是加載一會就閃退了昔逗,于是呢就開始小編的研究之路啦~
消息格式
字段名 | 字段類型 | 說明 |
---|---|---|
msgId | number | 消息ID |
fromId | number | 發(fā)送用戶ID, 1表示系統(tǒng)消息, 2表示AIGC消息 |
targetType | number | 聊天類型,1.私信 |
targetId | number | 聊天類型為1時表示用戶ID |
contentType | number | 消息類型 |
payload | object | 消息對象 |
createTime | number | 消息創(chuàng)建時間 |
summary | string | 消息摘要 |
1降传、首先這是官網(wǎng)給出的導(dǎo)入fbx模型的例子
var loader = new THREE.FBXLoader();
loader.load( '../model/fbx/Samba Dancing.fbx', function ( object ) {
//動畫
mixers=object.mixer = new THREE.AnimationMixer( object );
var action = object.mixer.clipAction( object.animations[0]);
action.play();
object.traverse( function ( child ) {
if ( child.isMesh ) {
child.castShadow = true;
child.receiveShadow = true;
}
} );
//縮放
object.scale.set(0.5,0.5,0.5);
//位置
object.position.set(0,0,0);
scene.add( object );
} );
2、開始克隆fbx模型纤子,由于找不到資料搬瑰,我只能去github上找,然后發(fā)現(xiàn)上面說可以使用js的一個庫SkeletonUtils控硼。
import { SkeletonUtils } from 'three/examples/jsm/utils/SkeletonUtils.js'
var loader = new THREE.FBXLoader();
loader.load( '../model/fbx/Samba Dancing.fbx', function ( object ) {
//動畫
mixers=object.mixer = new THREE.AnimationMixer( object );
var action = object.mixer.clipAction( object.animations[0]);
action.play();
object.traverse( function ( child ) {
if ( child.isMesh ) {
child.castShadow = true;
child.receiveShadow = true;
}
} );
//縮放
object.scale.set(0.5,0.5,0.5);
//位置
object.position.set(0,0,0);
scene.add( object );
//模型復(fù)制,如果需要大量復(fù)制,刻在下面進行循環(huán)
let meshBox = SkeletonUtils.clone(object)
meshBox.animations = object.animations
meshBox.mixer = new THREE.AnimationMixer(meshBox)
const action2 = meshBox.mixer.clipAction(meshBox.animations[0])
action2.play()
meshBox.position.set(0, 20, 0)
meshBox.scale.set(0.5, 0.5, 0.5)
sceneFish.add(meshBox)
} );
至此艾少,小編學(xué)習fbx模型的加載和克隆就完畢啦~