User:Caron/CTTutorial Japanese

From Custom Mario Kart
< User:Caron
Revision as of 10:16, 17 November 2019 by Caron (talk | contribs) (Harry Potter Effect)
Jump to navigation Jump to search

英語読める人はこのサイトのチュートリアルを見て作成してください。そっちの方が事細かく書かれています。このページは英語読むのめんどくさくて日本語で見たい方用です。 あくまで、2019年現在での自分なりの作成方法です。だいたい独学で身に着けたものなので、一部時代遅れな事やっていたり、間違ってることも書いていたりします。また文章書くのも苦手なんで、時々日本語がおかしい所もあります。結局は英語なんです。エイゴハダイジ

更新履歴:2019-11-17 作成

0.必要なもの

ソフトウェア名 役割 説明
モデリングソフト コースの3Dモデル作成 基本的OBJかDAEが出力できるのであれば何でも大丈夫です。ほとんどのクリエイターが使っているのはSketchUp3ds MaxBlenderですが、初心者向けとしてはSketchUpがおすすめです。

SketchUp 非常に扱いやすいので初心者向けです。Green ParkSky BeachSubspace Factoryなどもこのソフトウェアを使用(一部3dsMax利用)して作成しました。モデリングが非常に簡単ですが、インストール直後のSketchUpはObj出力/インポートに非対応なのでプラグインの導入が必要です。また頂点カラーや複数マップチャンネル(シャドー)などにも非対応なので、クオリティの高いCTを作る場合は以下の2つのソフトウェアを使用することをお勧めします。
3dsMax 自分がメインで使用しているソフトウェアです。普通に買うと高価なので、学生版(基本3年無料、商用利用禁止)を利用することをお勧めします。
Blender 触ったことないのでパスします。ただフリーな上に3dsMaxに劣らない機能を持っているので、SketchUpになれたらこっちに移るのもありです。

Wiimms SZS Tools SZSの展開・作成、KCL作成など SZSファイルの基本的操作には欠かせないソフトウェアです。インストールはこのサイトに行ってダウンロードしてください(インストール後、要再起動)。基本的に使うコマンドは次の通りです。
「wszst x 名前.szs」…szsファイルを展開します。展開後のフォルダは「名前.d」です
「wszst c フォルダ名」…フォルダからszsファイルを作成します。ちなみにコマンドの最後に空白+「-o」で上書き無視になります。それ以外はサイトのコマンド一覧を見てください。
KMP CloudLorenzi's KMP Editorなど KMPの編集 コースのラップ判定、CPU/キラーの動作、カメラ、オブジェクトの配置など、コースをまともにさせるためにはこれらのソフトウェアが必須です。KMP CloudはExcel風に編集できますが、z軸に関しては自分で図っておく必要があります(ただし、Magic Yを用いて補える)。Lorenzi's KMP Modifierは3DでKMPの編集が可能で、CPUやアイテムなどのルート設定が容易なので、基本的にこのソフトウェアでだいたいのことは可能です。ただし、カメラ設置やパス優先度、AREAを用いるKMPのオブジェクトやKCLの一部などの詳細設定などにおいては、KMPCloudで行う必要があるため、その場その場で使い分けできると理想的です。
BrawlCrate BRRESMDL0TEX0SRT0CHR0などの作成・編集 ObjからMDL0はBRRES Editorで作成可能ですが、古いソフトウェアな上に時々バグを引き起こすのでDAEから作成した方がよいです。objからDAEを作る場合はAutodesk FBX Converterを使って変換してください。

主にマテリアル、シェーダ、アニメーション等の編集を行います。操作方法は後述

SZS Modifier SZS,KMP,KCL,obj、テクスチャ等の編集 今現在ではほとんど使われないソフトウェアです。Wiimms SZS ToolsやKMP Cloudなどができる前までは必須なソフトウェアでしたが、現在ではこの両者がSZS Modifierよりも幅広い編集が可能ですので、インストールする必要はあまりありません(尚、Windows10のOSではNetframeworkのバージョンの関係上、管理者内の設定を一部変更しないとインストールさえもできません)。
CTools SZS内のKMP,KCL,(UIなどで用いられる)BMGTPLなどの編集 こちらも今では使う必要のないソフトウェアです。が、マップを作るときにBRRES Editorは現役です。それ以外のszs、bmg、tpl、kclはWiimms SZS Toolsが、kmpは上に上げたソフトウェアの方が上位互換です。SZS Explorerは日本語OSでは動きません。

1.モデリング

デザインに関しては人それぞれなので、最低限の事だけ述べるとします
・道幅は最低でも2064インチ以上かつZ軸は0より十分大きく、VS等のスタートにおいてプレイヤーが落下しないためにもスタートラインから最後尾までの長さは5504インチ以上にしてください。
ポリゴンは三角形の数がなるべく3万~4万以下に収めるようにしてください。テクスチャが低解像度なものを使用、またはほとんど使用しない場合は10万くらいまで可能(Neon Dimensionは7.7万+1.9万=8.7万ポリゴンですが、テクスチャはほとんど使用していない)だとは思いますが、それでもスローモーションバグが起こる可能性は高いです。尚、どのくら三角形の数があるかを確認する場合はBrawlBoxでMDL0をクリックしたときに表示されるNumFaceの値を見てください。
・SketchUpで作成している方はポリゴンを作成したときに面の色が白と黒とで分かれていると思いますが、必ずコースの表面は白色に統一しておいてください。表面を黒の方にするとコースが見えなくなります(コースだけならmdl0/MaterialのCullingをCull Noneにすることで両面表示にできますが、KCLは両面対応できません)。テクスチャが同じポリゴンに関しては対象のポリゴンを複数選択して右クリックでグループ化しておくことをおすすめします。

2.Brresの作成

作成したモデルは3dsMaxではDAEで、SketchUp、Blenderはそれぞれobj、FBXなどでエクスポートします。BrawlCrateはDAEかPMD(MikuMikuDanceのモデルファイル)のみしかMDL0の作成には対応していないので、objとFBXについては前述のFBX Converterを使用してDAEに変換してください。基本的にbrres作成までの流れは以下の通りです。

2.1 モデルをエクスポート
2.2 BrawlCrateでFile/New/Archive/BRRES Resource Packより空のBrresを作成
2.3 NewTreeを右クリック->Import/ModelよりDAEを選択
2.4 Import Settings/Modelにおいて、Model Type->Stage、Model Version->11に変更(頂点カラーを付けている場合、Color NodesのAdd ColorsはTrue、Default Colorは(128,128,128,255)にする)してインポート
2.5 モデルに貼っていたテクスチャをNewTreeを右クリック->Import/Textureより取り込んでいく(注意:テクスチャサイズは必ず2n(n≦10)ピクセルであること)。
尚、テクスチャフォーマットに関しては次の通りです。
フォーマット 説明
I8 カラーは白黒のみ、透明度非対応の形式です。一部で使われています
IA8 I8に透明度が有効になったフォーマットです。一部で使われています
RGB565 カラー対応でCMPRよりもきれいに表現ができますが、ファイルサイズが大きくなるためおすすめしません。また透明度にも対応してません。
CMPR 最も使われているフォーマットです。カラーかつ透明にも対応していますが、透明度は無しかか有りかの2値のみなので、半透明などが含まれる場合は下2つのどれかを使用してください。
RGBA5A3 カラー対応かつ透明度は128段階対応しています。半透明を用いる場合はなるべくこのフォーマットを使用してください
RGBA8 カラー対応かつ透明度は256段階対応しています。このフォーマットを使用するとファイルサイズが非常に大きくなる(RGBA5A3の2倍)ことによりスローモーションバグの原因の一つ(このページのGPU Bottleneckを参照)になるので、利用する場合は多用せずに、なるべく小さい画像のみにしてください
2.6 ctrl+shift+sでkmp,kclがあるフォルダに「course_model.brres」としてセーブする(背景モデルならvrcorn_model.brres)

3.マップの作成

※ちょっと古いやり方ですが、一番楽なのでこの方法で説明します。
画面上にマップを表示させるためのマップモデルを作成します。

3.1 マップ専用のオブジェクトをコースモデルから作り、objでエクスポートする
3.2 CToolsのBRRES EditorでFile/Import/Wavefront Objでobj model importerを開く
3.3 Path項目の「...」をクリックし、3.1で作成したobjを選択
3.4 「Load Materials」のチェックを外し、「Map Model」をチェックしてインポートする
3.5 適当な場所(できれば作成したcourse_model.brresやkmp、kclの場所)に「map_model.brres」で保存し、コマンドプロンプトを起動して保存したフォルダまでcdコマンドで移動する
3.6 次のコマンドを打つ
wszst minimap --auto map_model.brres

ちなみに、マップに頂点カラーをつけたり、マップそのものをテクスチャにできたりも可能です。そちらに関しては、このページを参考にしてください。

4.KCLの作成

Brres作成しただけではコースは走れません。モデルに判定を付与するために、KCLの作成は必要です。

4.1 判定を付与させたいオブジェクトの名前(SketchUpではマテリアルの名前)を「_XX_YYY」に変更する(XX:フラグ値、YYY:エフェクト)
XXおよびYYYはKCL Flagを見て設定してください。(XXはBasic Effectsの各タイトルの数値、YYYはそのタイトルの「Basic effect (Z, octal)」の値)
4.2 すべてのオブジェクトの名前が変更できたら、obj形式でモデルをエクスポート
4.3 コマンドプロンプトを起動し、エクスポートしたobjがあるフォルダまでcdコマンドで移動し、そのフォルダにて次のコマンドを順番に打ちます。
wkclt encode (objの名前、拡張子付き) -o
wkclt copy (objの名前).kcl (作成後のファイル名).kcl --kcl=RM-FACEDOWN,DROP-FIXED,DROP-INVALID -o

※モデルの判定に壁エフェクトを追加した場合、走行の際道と壁の部分でぶつかりやすくなってしまう、Bean Cornerと呼ばれている衝突効果が発生します(有名な例として、Six King Labyrinth)。これが残っているCTはぶつかったときに道に戻れなくなってしまいますので、3.1においてYYYの先頭1桁に+4した値(例えばWall(0x0C)の000ならば、_0C_000を0C_400に変更)に変更してください。(ちなみにlower-wallsを使う方法もありますが、モデルとKCLとでずれてしまうのであまりお勧めはしません。)

5.KMPの編集

作成したコースに周回判定や復帰位置を配置、キラーを走らせたりするためにさせます。
KMPはKMP Cloudなどで新規作成などできますが、その場合カメラの設定などやや高度かつめんどくさいことをする必要があるので、既存のSZSから引っ張ってそれを利用する方がよいです。
以下、Lorenzi's KMP Modifierを用いたkmp設定方法について述べていきます。先にKCLは作成しておき、名前はcourse.kclとして編集するkmpがあるフォルダ内に配置してください。

基本的にCPU、アイテム、チェックポイントの設置方法は次の通りです。

5.1.1置きたい物(CPUはEnemy Paths,アイテム、キラーはItem Paths、チェックポイントはCheckpoints)を選択、一から作る場合、始めはAltキーを押したままCPUのパスを配置し、そのあとは置いたパスからAlt押しながらポイントをドラックしてパスを配置していく
※途中パスを分岐させたい場合、分岐させる点からAlt+ドラッグで押しながら分岐させる(最大分岐数6)。ただし、分岐したパスは必ず最後にすべてまとめてください。
※加えて、チェックポイントでパス分岐する場合、分岐パス先で分岐はさせないようにしてください、順位バグが発生します。
5.1.2すべてのパスを配置し終えたら、一番最初に置いたポイントと最後に置いた所同士をつなげる(Alt+マウスドラッグでつなげる)
チェックポイント同士は、必ず台形になるようにしてください。そうでないと順位バグが発生します
※チェックポイントには必ずキー(Lorenzi's KMP ModifierではType)をスタート地点を0として、一定区間ごとに1ずつ増やして設定してください。そうでないとウルトラショートカットが発生したりします

オブジェクトを配置したい場合、次の通りです。

5.2.1 置きたいオブジェクトファイルを編集中のkmpがあるフォルダ内に配置(brresは同じフォルダ上,breffとbreftはeffect/オブジェクトの名前のフォルダ,brsadはbrsad/オブジェクトの名前のフォルダ)
5.2.2 Alt押しながらクリックしてオブジェクトを配置、置きたいオブジェクトのID、設定すべき場所をObjectsより確認して設定する
例:アイテムボックスを配置する場合、itembox.brresを用意し、IDは101、ルートは65535(=無し)として設定する。設定に関しては基本すべて0でokだが、特定のアイテムしか出さないなどのアイテムボックスにさせる場合はItem Settingsを見て設定する。
※Lorenzi's KMP Modifier内ではすべて10進数の値で扱うため、座標以外の値はすべて電卓等で16進数の値を10進数に直して入力してください
※オブジェクトがルートを用いる場合、Routeの項目で新たにルートを作成する必要があるので注意(同じルートを複数のオブジェクトで共有することはできない)してください

復帰点を配置する場合、次の通りです。

5.3.1 Alt押しながらクリックで復帰点を配置していく
5.3.2 特定のチェックポイント間において一つの復帰点にプレイヤーを復活させるようにするために、その復帰点を選択したままCheckpointsに移り、リンクさせたいチェックポイントを選択(ctrl押したままで複数選択)し、「Assign Selected Respawn Point to Selected Checkpoints」をクリックさせてリンクする
5.3.3 全ての復帰点とチェックポイントのリンク設定ができるまで4.3.2を繰り返す

6.テスト

1~5ができたら基本的にCTは完成したといっていいと思います。フリーズしないかチェックしたい場合、先に

wszst check 作成したコースファイル.szs

でログを見て、警告がなければほとんどの確立でフリーズせずに動きます。あった場合は警告文の指示に従って修正してください。
尚、SZSに最低限必要なファイルは以下の通りです

  • course.kcl
  • course.kmp
  • course_model.brres
  • map_model.brres
  • vrcorn_model.brres

7.発展:アニメーション

8.発展:カメラの設置

9.発展:Harry Potter Effectの修正

どういうバグかはこのページを見てください。簡単に言えば、透明なテクスチャを使っているマテリアルが透明でないものと認識されてしまい、付近のモデルやプレイヤーが見えなくなったりするバグです。 修正方法は2通りあります。片方はCMPR前提として、もう片方はRGBA5A3、RGBA8を使ったテクスチャにおけるパターンです。

9.1 CMPRを用いたテクスチャの場合

修正方法が簡単です。半透明テクスチャを使ってない限りはこの方法で十分です。

9.1.1 MDL0/Materialを開き、修正したいマテリアルを選択
9.1.2 右画面のAlpha Functionにおいて次のように設定を変更する
Ref0:0->128
Comp0:Always->GreaterOrEqual
Red1:0->255
Comp1:Always->LessOrEqual

9.2 RGBA5A3、RGBA8を用いたテクスチャの場合(未確定)

この設定を複数のマテリアルで用いる場合、使用しているオブジェクト同士が近いと描写順位がバグります。その場合、ObjectのDraw Priority(描画優先順位)を適切に変更してください。Doesn't Matterのチェックを外すことで変更可能になります。
複数のbrresで用いてしまう(任天堂が元から使っているものは問題ない)と、これまた描画順位のバグが発生しますが、この直し方は自分でもまだわかっていない(描画順位はbrres内で独立しているのが原因?)ので、なるべく一つのbrres内だけの使用にしてください。

9.2.1 MDL0/Materialを開き、修正したいマテリアルを選択
9.2.2 右画面の指定箇所を次のように変更する
・BlendMode
EnableBlend:False->True

・Light Channels
LightChannel0/Alpha/Enabled:True->False
※使用シェーダにてLightChannelsが使われていない場合は変更する必要なし

・Material
XLUMaterial:False->True

・Z Mode
CompareBeforeTexture:True->False
EnableDepthTest:False->True
EnableDepthUpdate:False->True
9.2.3 MDL0/Objectのを開き、設定を変更したMaterialを用いているObjを選択し、DrawlPassをXLU(Transparent)に変更