LoginSignup
3
0

More than 1 year has passed since last update.

PlayCanvasでモデルのBone一覧を取得して3Dモデルを動かす

Last updated at Posted at 2019-07-23

スキンインスタンスを持っているエンティティの一覧を表示します

pc.app.root.children[0].children.map(entity =>{
    if(entity.hasOwnProperty("model")){
	    return entity
    }}
).filter((_)=> _ ).filter(model => model.model._model.skinInstances.length)

Boneの一覧を取得し、Boneに対してポジションを変更することで、スクリプトだけでBoneを動かすことができます。

const modelName = "base" //キャラクターの名前がbaseの場合です
const bones = pc.app.root.findByName(modelName).model.model.skinInstances.map((skinInstance) =>skinInstance.bones.map(bone => bone)).flat()
Model.prototype.update = function(dt) {
    const bones = this.entity.model.model.skinInstances.map((skinInstance) =>skinInstance.bones.map(bone => bone)).flat()
    bones[2].setLocalPosition(0,20,20)
};


 pc.app.root.children.map((child) => {
	if(child.model){
		return child.model
	}
}).filter(_ => _)

 pc.app.root.children.map((child) => {
	if(child.model){
		return child.model
	}
}).filter(_ => _).map(charactor => {

   return charactor.model.skinInstances.map((skinInstance) =>skinInstance.bones.map(bone => bone)).flat()
}).flat()
PlayCanvas開発で参考になりそうな記事の一覧です。 入門 応用 その他の記事はこちらになります。 その他関連 - [PlayCanvasタグの付いた記事一覧](https://qiita.com/tags/playcanvas)

PlayCanvasのユーザー会のSlackを作りました!

少しでも興味がありましたら、ユーザー同士で解決・PlayCanvasを推進するためのSlackを作りましたので、もしよろしければご参加ください!

日本PlayCanvasユーザー会 - Slack

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0