littleMaidMobマルチモデル作成講座~デフォルトモデルをいじる~
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

littleMaidMobマルチモデル作成講座~デフォルトモデルをいじる~

2016-04-14 03:33
  • 15
  • 4
作成する環境が整ったところで、さっそくモデル作成に入ります。
といってもいきなり一からモデルを作るもの難しいので、既存のモデルをいじるところから始めましょう。
<2017/3/29追記>
現在Techneの作者様がTechne2の開発に合わせたサイトの新設(または更新)により、TechneのインストーラーのDL、およびインストーラーからのインストールが出来なくなりました。
<2017/9/10追記>
CurseのTechneのトピックにて有志の手による使用可能な復旧版?がアップロードされました
詳しくは「littleMaidMobマルチモデル作成講座~作成の準備~」で
1.Techneでいじる
 ①準備段階でダウンロードしてあるTechneをインストールし、
  おこたさんがフォーラムにてTechneでのLittlemaidモデルを公開しているので、下の
  リンクからDLして展開、Littlemaid_base.tcnを開く。Techneの画面が開くので
  [Edit]/[Load Texture]でメイドさんのテクスチャを割り当てておきます。
  (ここではdefaultのmob_littlemaidf.png)

  http://forum.minecraftuser.jp/viewtopic.php?f=13&t=176&start=180#p4062

 ②ここまでやると以下のような画面になるかと思います(見ずらい場合はクリックで拡大)


  画面の説明は大まかに
  1.モデルの表示形状
  2.パーツの位置情報(座標、角度等)
  3.テクスチャ上の各パーツの位置
  4.モデルを構成するパーツ一覧

  また、パーツを選択した際、②にはパーツの位置情報が、③にはそのパーツがテクスチャ
  のどの部分を使用しているかが表示されます(下は"head"を選択した場合)

  データ画面は上から
  Boxの名前:head
  Dimensions:パーツの大きさ(xyz)8,8,8
  Position:動かす時の基点(xyz)0,0,0
  Offset:基点からの位置(xyz)-4,-8,-4
  Texture Offset:テクスチャマップ位置(xy)0,0
  Rotation:パーツの角度(xyz)0,0,0
  ([Tools]/[setting]の画面で[Use Radians]にできますが、この解説では使いません)

 ③既存モデルをいじるといっても、パーツの大きさを変えるとそれに応じてテクスチャマッ
  ピングも変わるので、ここでは位置情報の変更だけ行います。

  というわけで...
  


  はい、ふざけました。すみません...(いい例が思いつかなかったもので...)
  あくまで例なのでご自由に位置情報を変えてみてください

 ④いじり終わったらいったんこの状態で[File]/[Save As]から別名保存する。
  (ここではlittleMaid_test.tcnとしておきます)

2.Eclipseでいじる
 Techneで作成したモデルをもとにEclipseで既存モデルを改造していきます。
 注)Eclipseを用いず手書き(メモ帳等)で編集することも可能ですが、エラーの発見等が難
   しいため非推奨かつここでは解説しません。

 ①まずEclipseを開き、MMM_ModelLittleMaid_SR2.javaをコピペして名前を変更
  (ここではMMM_ModelLittleMaid_test.javaとします)

 ②名前を変えたもの(ここではMMM_ModelLittleMaid_test.java)を開く。すると下の
  画像のように表示されるはずです。
  


  これらがメイドモデルを構成しています。ただ、これだけでは作成するには不十分なの
  で、他のファイルからソースをもらってきます。かなり重要な個所なので正確に手順に沿
  って行ってください


  1)MMM_ModelLittleMaidBase.javaを開き、50~116行目までをコピーし、
    MMM_ModelLittleMaid_test.javaで下の画像のように改行後、39行目あたりに張り
    付ける。


  2)再度MMM_ModelLittleMaidBase.javaを開き、今度は280~308行目をコピーし、
    MMM_ModelLittleMaid_test.javaの136行目あたりに張り付ける


   もらってくるソースはひとまず以上です。
   これらの部分は簡単に言うと、デフォルトのメイドモデルのパーツ情報を指定している
   部分で、この部分なしだと正確にスキンが反映されなかったり、そもそもモデル自体が
   表示されない原因になります。しっかりコピーしておきましょう。

 ③次にパーツの位置情報をいじっていきます。まずはどこが何を意味しているのかを大まか
  に理解しておきます


  1.どのclassファイルをベースに編集中のclassファイルを作成するかを指定
    上の画像では"MMM_ModelLittleMaidBase"をベースに
    "MMM_ModelLittleMaid_test"を作成するよう指定しています

   例)public class "ファイル名" extends MMM_ModelLittleMaidBase {

  注意)LMM1.7.10以降でも使えるようにしたい場合、①の "extends" 以降の文字
     列を必ず "MMM_ModelLittleMaidBase" と指定しておいてください。
正確
     な原因はわかりませんが、これ以外を指定した場合、モデル導入時に反映さ
     れない、またはクラッシュする恐れがあります。

  2.パーツの登録
    主に新しいパーツを追加するときに記述します

    例)public MMM_ModelRenderer "パーツ名";



  3.パーツの情報の登録とテクスチャの位置の指定

   例)"パーツ名" = new MMM_ModelRenderer(this, x, y);
    ※x、y、にはテクスチャの座標の数値が入ります

  4.テクスチャの左右反転 trueで有効
   ※不安定なのであまりあてにしないように

  5.パーツの大きさと基点からの位置
    Offset(xF,yF,zF)、Dimensions(x,y,z)、拡大率、の順番に書く

   例)"パーツ名".addBox(xF, yF, zF, x, y, z, psize - 0.4F);

   ※x、y、z、には数値が入ります
   ※"psize"の後ろに"- 0.4F"のように数値を加えることでパーツの拡大縮小ができます。

  6.パーツの基点の位置 Position(x,y,z)

   例)"パーツ名".setRotationPoint(xF, yF, zF);

   ※x、y、z、には数値が入ります

  7.親パーツの指定
    これで指定された子パーツは親パーツの動きを追従します

   例)"親パーツ名".addChild("子パーツ名");

 ②Techneにていじったパーツを探し、位置情報をいじる
  ここでは"head"の位置を変えたので、"MMM_ModelLittleMaid_test"の"bipedHead"の位
  置をいじります。
  (画像ではTechneで"head"のy座標を"-5F"に変更したのでその通りに記述)


 ③デフォルトモデルのパーツの位置や角度を変更する際にはもうひと手間必要です


   上の画像の136行目に"setDefaultPause"と書かれています。
   意訳すると「通常時のパーツの位置情報をセットする」という意味で、ここでは
   メイドが何もしていないとき、つまり通常時のパーツの位置や角度を指定します。

   メイドが待機時や移動時に、パーツの位置を変えたり、何かしら動きを加えるようにし
   た場合、通常時に戻った際ここで指定した位置と角度に戻ってきます。
   逆にパーツに動きを加えない場合は記述する必要はないのですが、心配なのであれば
   記述しておくのもいいでしょう。

   上の画像では通常時の位置のy座標を"-5F"に変更してます。

 ④Ctrl+Sで変更を保存する

 ⑤Run Clientでテスト環境下でマイクラを起動する。
  
  すると...



  あれ?反映されてない...

  それもそのはず、まだ使うテクスチャを指定していません

 ⑥というわけで、
  mcproot/src/minecraft/assets/minecraft/textures/entity/littleMaid/下に
  メイドのテクスチャファイルを置きます

  今回は下の画像のように作成してます



  モデルごとのテクスチャの指定方法としては、Eclipseにてファイル名を

   MMM_ModelLittleMaid_"モデル名".java

  とした場合、テクスチャのフォルダ名は

   MMM_"モデル名"

  といった形になります。
  テクスチャ自体の名前についてはLMM本体に同封されているReadmeを参照してください

 ⑦テクスチャを置いたら再度"Run Client"でマイクラを起動

  すると...



  しっかりと反映されてますね(はいそこ気持ち悪いとかグロイとか言わない)
  モデル作成はこれでひとまず完成です。
3.ソースのclassファイル化
 モデルが完成したのでソースをclassファイル化します

 ①mcprootファイルを開き、recompile.batをダブルクリックで実行
  javaファイルをclassファイルに変換します
  ※しばらく時間がかかるので別作業でもしながら気長に待ちます

 ②mcprootファイルのreobfuscate.batをダブルクリックで実行
  これでclassファイルの抽出を行います。

 ③前の記事にてupdatemd5.batを実行しているので、
  mcproot/reobf/minecraft/下に作成したモデルファイルが抽出されているはずです
4.出来上がったモデルをzip化
 抽出したモデルファイルとテクスチャファイルをzip内に以下の例のように配置します
 
  littleMaidMob-SR3_V1.7.10-1a.zip
   ├ModelLittleMaid_test.class
   └assets
    └minecraft
     └textures
      └entity
       └littleMaid
        └MMM_test (赤文字の部分は同一にしておくこと(大文字小文字等)
         └test_00.png

  あとは出来上がったzipファイルをmodsに放り込んでマイクラを起動、反映されていれば

  完成です!

5.まとめ
 大まかに手順をまとめると

 ①Techneで既存のパーツの位置の変更、および新パーツの追加
  ※慣れてきたらここは飛ばしても問題ありません
 ②Eclipseを開き、既存のモデルのファイルをコピー&名前を変更
  ※この方が一からソースを記述する手間が省けます
 ③モデルのテクスチャを所定の位置に置く(ファイル名の指定も忘れずに)
 ④パーツの位置情報等を記述、テクスチャの編集
 ⑤"Run Client"でテストプレイ、反映されているかを確認
 ⑥recompile.batを実行してjavaファイルをclassファイルに変換
 ⑦reobfuscate.batを実行してclassファイルを抽出
 ⑧テクスチャファイルとともにclassファイルをzip化
 ⑨modsに入れてマイクラを起動
 ⑩反映できていれば完成!

 といった感じです。recompile.batを実行した際にエラーが出たり、"Run Client"で
 マイクラを起動したらすぐにクラッシュした場合は、どこかしらエラーが出ているはずなの
 で、しっかりとつぶしておきましょう。

 
 「デフォルトモデルをいじる」~「zip化してmodsに入れて使えるようにする」までの
 手順は以上です。次の記事では新パーツの追加を解説していきます。


<追記>2016/11/04
 環境次第でソースファイルの記述に日本語(「//」でコメントアウトされたものも含む)があるとrecompile.bat実行時にエラーが出て失敗が出るとの報告がありました(2バイト文字がどうやら引っかかるようです)。また、使用しているeclipseを新バージョンに変更した際、その日本語の部分が文字化けして、同じようにrecompileできない状態になるようです。
 現状的確な対処法がわからない状態ですが、もしこのような状況に陥った際は該当個所の記述を消去することで対処してください(主にコメントアウトによるソースの説明の部分が対象のはずなのですが、万が一のことを考えバックアップを取っておくことを推奨します。)

<参考元>


niconicoに登録していない等の理由でコメントができない方は以下のサイトでもコメントを受け付けています
(クリックすると外部サイトに飛びます)
http://honeywhitefox.wixsite.com/shiragitsune/contact
広告
他5件のコメントを表示
×
移動時や待機時のアニメーションの
設定はどのように行うのでしょうか?
良ければご教示願います。
12ヶ月前
×
どういった動きを付けるかにもよりますが、ほとんどのものは「public void setRotationAngles」と書かれている列の下に記述していくことになります
デフォルトの状態でのアニメーションの設定は「MMM_ModelLittleMaidBase.java」に書かれているので、それを参考にしながらやるとわかりやすいと思います

大まかな記述方法は
if("どの動作時に行うか"){

   "動きを付けるパーツ"."角度なら「rotateAngle」等,移動なら「addRotationPoint」等" += 数値;

}←必ず「{}」内に記述するように
といった感じになります

例えば待機時のアニメーションであれば、「public void setRotationAngles」と書かれた列の下に

if (isWait) {

と書かれている部分があるので、このカッコ「{}」内にアニメーションを付けたいパーツおよび数値を記述すれば、待機時に設定した動きをするようになります

例)

if(isWait){

     bipedHead.addRotationPointX(10.0F);
     bipedRightLeg.rotateAngleY += 0.2F;

}

動作内容>待機時にパーツ「bipedHead」の位置ををX軸に10.0F移動
         パーツ「bipedRightLeg」の角度をY軸に0.2F回転
12ヶ月前
×
早速ご返信頂きました事、感謝申し上げます。
アニメーションに関しては理解できたのですが、
新たに一つ疑問が生じたため再度ご回答していただけると幸いです。
この記事ではAnimationのBase(MMM_ModelLittleMaid_test.Javaの8行目)が
1.5頭身のメイドモデル(MMM_ModelLittleMaidBase)として書かれていますが
2頭身(プレイヤーと同じ身長)のメイドを作る場合どれをBaseとして定義すれば良いのでしょうか?
再度ご教示願います。
12ヶ月前
×
>>8
二頭身のものを作るとなると「MMM_ModelMulti_Steve.java」およびそのBaseである「MMM_ModelMultiBase.java」があるのでそのあたりを用いればいいかと思われます。
ただ、私自身このようなことを試みたことがないので確かなことが言えないこと、また、今までBaseに「MMM_ModelLittleMaidBase.java」を指定しなかった場合にモデルが表示されなかったことが多々あったので(もちろんちゃんと表示されたこともありますが原因は不明)、あくまで参考程度に思い当たるものを試行錯誤してみることをおすすめします。

で、ここまではあくまでBaseを「MMM_ModelLIttleMaidBase.java」以外にした場合の話で、かなり遠回りというかごり押しになりますが、一から自分でモデルを作ってしまうという手もあります
幸い元の二頭身モデルはパーツ数も少なく、作りがそこまで複雑ではない、加えて必要になるであろう情報のほとんどは「MMM_ModelMulti_Steve.java」にあるようなので、必要箇所を切り貼りすればある程度は手間も少なるかと思われます。

12ヶ月前
×
>>9
再度早速ご返信頂きました事、感謝申し上げます。
返信が遅れてしまい大変申し訳ないです。
お恥ずかしい限りなのですがPCの故障が発生し、再購入、環境設定などしておりました。

僭越ながら本題に入らせていただきます。
前回の質問に関しては全て理解できました。
しかし、recompile.batを実行すると前のPCでは出なかった
"scalac" is not found on the PATH. Scala files will not be recompiled との
表記が出てくるようになってしまいました。
私事で申し訳ないのですが、語学力が乏しいもので
この先どうしたら良いのか・・・

大変恐縮なのですが、ご教示の程宜しくお願いします。
11ヶ月前
×
>>10
PCの復旧、環境の再構築の作業ともにお疲れ様です

"scalac"の問題についてですが、自分の環境下で起きたことがないため、以下の回答は他所サイトを参考に得たものになります(記事自体が古いものばかりだったのであくまで参考程度に)
結論から言うと、無視したままでも問題なく起動できるようです
が、起動できない例もあるようなので、一度無視して構築を進め、起動できないようであればJava等を見直してみるなどしてみてください

(「scalac マイクラ」等で検索をかけてみるといろいろ出ますよ)
11ヶ月前
×
三度早速ご返信頂きました事、感謝申し上げます。
「scalac」の問題に関しましては、JAVAの更新を掛けたら動かせました。
ありがとうございました。

しかし、また新たに問題が生じました。
1.6.2では問題無くMinecraft上で表示されていたのが1.7.10では表示すらされなくなってしまいました。

BaseをMMM_ModelLittleMaidBaseではなく
MMM_ModelMulti_Steveでclass出力してしまったからでしょうか?

何度も何度もお手数を掛けてしまい申し訳ないのですが、ご教示の程宜しくお願いします。
11ヶ月前
×
>>12
scalac問題が解決したようで何よりです

1.7.10にて表示されなくなったのはおそらくそのBaseをMMM_ModelMulti_Steveのほうにしてしまったのが原因でしょう。
自分の経験上、1.6.2では確かにBaseをMMM_ModelLittleMaidBaseにせずとも動くのですが、1.7.10以降(1.6.4でも一応動きます)ではどうやら表示されない、あるいはそもそも起動する段階でクラッシュしてしまうようです。もっとも、現在wiki等で配布されているバージョン対応済みのものの中には、MMM_ModelLittleMaidBaseを指定していないにもかかわらず動作しているらしきものもあります。なので正確なところは私にもわかりません。すみません。

現状単体モデルとして作成する場合はMMM_ModelLittleMaidBaseをBaseにしておくのが無難かもしれません
11ヶ月前
×
>>13
今回も早速ご返信頂きました事、感謝申し上げます。
Baseの問題も無事に解決することができました。

約一か月の期間不器用な私の質問に四度もお答えいただき本当に有難うございました。
これからは何とか自分一人でもモデル作成はできそうです。

重ねて感謝申し上げます。
有難うございました。
11ヶ月前
×
>>16
いえいえ、こちらこそ毎度毎度丁寧な質問ありがとうございます
また何かあればお声がけくださいな

モデル作成、頑張ってください。
11ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。