three.js MMDLoader

2023-02-16 17:50 更新

一個(gè)用于加載MMD資源的加載器。

MMDLoader從MMD資源(例如PMD、PMX、VMD和VPD文件)中創(chuàng)建Three.js物體(對(duì)象)。 請(qǐng)參閱MMDAnimationHelper來(lái)了解MMD動(dòng)畫的處理,例如IK、Grant和Physics。

如果你想要MMD資源的原始內(nèi)容,請(qǐng)使用.loadPMD/PMX/VMD/VPD方法。

代碼示例

// Instantiate a loader
const loader = new MMDLoader();

// Load a MMD model
loader.load(
	// path to PMD/PMX file
	'models/mmd/miku.pmd',
	// called when the resource is loaded
	function ( mesh ) {

		scene.add( mesh );

	},
	// called when loading is in progresses
	function ( xhr ) {

		console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );

	},
	// called when loading has errors
	function ( error ) {

		console.log( 'An error happened' );

	}
);

例子

webgl_loader_mmd
webgl_loader_mmd_pose
webgl_loader_mmd_audio

構(gòu)造函數(shù)

MMDLoader( manager : LoadingManager )

manager — 加載器使用的loadingManager(加載管理器),默認(rèn)值是THREE.DefaultLoadingManager。

創(chuàng)建一個(gè)新的MMDLoader。

屬性

共有屬性請(qǐng)參見其基類Loader。

方法

共有方法請(qǐng)參見其基類Loader。

.load ( url : String, onLoad : Function, onProgress : Function, onError : Function ) : undefined

url — 一個(gè)包含有.pmd.pmx文件的路徑或URL的字符串。
onLoad — 當(dāng)加載過程成功完成以后將被調(diào)用的函數(shù)。
onProgress — (可選)加載過程正在進(jìn)行的時(shí)候被調(diào)用的函數(shù)。其參數(shù)是一個(gè)XMLHttpRequest實(shí)例,其包含了total bytes(總的字節(jié)數(shù))和loaded bytes(已經(jīng)載入的字節(jié)數(shù))。
onError — (可選) 加載過程中若發(fā)生了錯(cuò)誤將被調(diào)用的函數(shù)。這一函數(shù)接收錯(cuò)誤作為參數(shù)。

開始從URL中加載PMD/PMX模型文件,并使用包含有已被解析的SkinnedMesh和MeshToonMaterial數(shù)組的BufferGeometry對(duì)象來(lái)觸發(fā)回調(diào)函數(shù)。

.loadAnimation ( url : String, object : Object3D, onLoad : Function, onProgress : Function, onError : Function ) : undefined

url — 一個(gè)包含有.vmd文件的路徑或URL的字符串或字符串?dāng)?shù)組。如果兩個(gè)及以上文件被指定,它們將會(huì)合并。
object — SkinnedMesh 或 Camera。 剪輯及其軌道將會(huì)適應(yīng)到該對(duì)象。
onLoad — 成功加載完成后被調(diào)用的函數(shù)。
onProgress — (可選)當(dāng)加載正在進(jìn)行時(shí)被調(diào)用的函數(shù),參數(shù)將是XMLHttpRequest實(shí)例,其包含了 .total (總的)和 .loaded (已加載的)字節(jié)數(shù)。
onError — (可選)如果加載過程中發(fā)生錯(cuò)誤時(shí)被調(diào)用的函數(shù),該函數(shù)接受一個(gè)錯(cuò)誤來(lái)作為參數(shù)。

開始從url(s)加載VMD動(dòng)畫文件(可能有多個(gè)文件),并使用已解析的AnimatioinClip觸發(fā)回調(diào)函數(shù)。

.loadWithAnimation ( modelUrl : String, vmdUrl : String, onLoad : Function, onProgress : Function, onError : Function ) : undefined

modelUrl — 一個(gè)包含有.pmd.pmx文件的路徑或URL的字符串。
vmdUrl — 一個(gè)包含有.vmd文件的路徑或URL的字符串或字符串?dāng)?shù)組。
onLoad — 成功加載完成后被調(diào)用的函數(shù)。
onProgress — (可選)當(dāng)加載正在進(jìn)行時(shí)被調(diào)用的函數(shù),參數(shù)將是XMLHttpRequest實(shí)例,其包含了 .total (總的)和 .loaded (已加載的)字節(jié)數(shù)。
onError — (可選)如果加載過程中發(fā)生錯(cuò)誤時(shí)被調(diào)用的函數(shù),該函數(shù)接受一個(gè)錯(cuò)誤來(lái)作為參數(shù)。

開始從URL中加載PMD/PMX模型文件和VMD動(dòng)畫文件(可能有多個(gè)文件),并使用一個(gè)Object —— 包含有已解析的SkinnedMesh和適應(yīng)SkinnedMesh的AnimationClip,來(lái)觸發(fā)回調(diào)函數(shù)。

.setAnimationPath ( animationPath : String ) : this

animationPath — 用于加載動(dòng)畫數(shù)據(jù)(VMD/VPD 文件)的基礎(chǔ)路徑。

設(shè)置額外資源(例如貼圖)的基礎(chǔ)路徑。

源代碼

examples/jsm/loaders/MMDLoader.js


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)