髪などボーンを切れるハサミを改造してみた
【この記事はNeos VR Advent Calendar 2022 22日目の記事です。】
はじめに
はじめましての方ははじめまして。第7回ibisPaint公式オフ会(2019年)参加者でもある月光原澪と申します。Neos VRではmpです。
アドカレ自体はたぶん4回目ですがまだまだ慣れません。一昨年の記事はこちら(プロセカ関係)。
nz.hateblo.jp
あかたるさんから回ってきたアドカレバトンを繋ぎたいと思います。
Neos VRについての説明は21日目までの誰か…が特にしていなかったので後ほど簡潔にします。
概要
Neos VRではハサミを使ってダイナミックボーンの入った髪やしっぽなどを切ることができます。*4*5
ですが、脚や指まで切れてしまう事故や自分自身には使えないという欠点があるため改造することにしました。
ハサミの実例(画像)
- 実際に見てもらった方が分かりやすいのでNeosVR内でハサミを使った画像を載せていきます。
- レアさんと撮ったときの写真。この時は美容室ワールドも未完成でした。
- 中央:元の長さ 左:伸びるハサミで伸ばした状態 右ハサミで切った状態(ismiさん)
- 三つ編み部分を切り、顔周りも合わせて揃えています。(ismiさん)
- 左→右:前髪を伸ばし、ツインテール部分を半分に縮ませてみました。(K-Pereさん曰く"いい感じに短くするハサミ"/"アイロンかけたみたいにストレート前髪!")
- 伸ばすハサミは前髪だと分かりやすいですね。(Gaming用の「豊町澄香」フォルム)
- (他の方のツイートですが)動画で見たい方はこのツイートがハサミ動作の参考になると思います。
前提:ボーンについて
- 3Dモデルでは「ダイナミックボーン」と呼ばれるものを設定することで揺れるものを表現できます。(Neos内での設定方法はここでは省略します。)
- VRoid Studioでは髪の揺れ方を設定する画面からボーン数も設定できます。
- NeosVR上で確認すると階層は次のように表現されます。(下は3つの場合でそれ以上の場合も同様に続く)
>hair1
>hair2
>hair3
揺れる根元から先端までの子の関係になっているためボーン数が多いほどハサミでも細かく切れることになります。
改造の流れ
大まかに:自分に対して使えるように→髪だけに反応するように→切るだけでなく伸びるように
ハサミの構造は次の画像の通りです。
改造前のハサミのlogixはCadynさんという方が作成したそうです。面白いアイテム作成に感謝と尊敬です。
そんなハサミのBone cutter部のlogixがこちら。
自分に対して使う
自分以外の人が着ているアバターに対してしか使えないため自分が使えるよう改造します。
髪だけに反応させる
自分に使えたのは良いものの、ハサミ自身が消えたりハサミに近い指までが切れてしまうためこれを髪だけ切れるよう改造していきます。
脚や首が切れる事故も防げるためより安全です。
(猫耳などは他の部位と被りづらいので改造前のハサミでも事故は発生しづらいはず。ということで髪だけにしています。)
髪だけという判定ですが、"ボーンがheadに付いている"だとやはり曖昧で髪以外も切れてしまうのと改造も難しそうなため今回はslot名が「hair」もしくは「ponytail」なものとしました。*6
- 右上にslot名判定を追加し、文字列に「hair」「ponytail」「twintail」を含む場合のみPulseを飛ばす(ハサミ処理を続行する)ようにしました。「Hair」のようにボーンのslot名が一部大文字になる例もあったため小文字に変換(To Lower)してから判定しています。
- 「bone」は髪であってもなくても使われるため今回は除外しています。
- 「|」はOR演算子です。
伸びるようにする
切れるようになりひとまず使えるものとして完成したものの、伸びた方が面白い&ボーン数が少ないアバターだと切りすぎるという観点から伸縮するようにさらに改造します。
- 上部scaleの設定値を全て0から「Y方向のみ元の2倍」に変えました。
- Global Transformからscaleの値を取りX:1倍/Y:2倍/Z:1倍に乗算した上でSet Global Scaleを用いて設定しています。
- 最初は固定値X:1/Y:2/Z:1でしたが髪の元のscale値が極端に小さいアバターもあった(使うことで著しく大きくなってしまった)ため修正しています。
- 「Get Global Scale」というものはなく座標とスケールがどちらもGlobal Transformから取れるそうです。
- Global Transformからscaleの値を取りX:1倍/Y:2倍/Z:1倍に乗算した上でSet Global Scaleを用いて設定しています。
- 伸びる方と同様に改造し「Y方向のみ元の0.5倍」に変えました。
ボーンサイズをいじるとどうしてもボーンの動作が不安定になりすく使いづらいのが難点です。不安定になると揺れたときにテクスチャがうまくついていかないような感じになってしまいます。
伸びる方に関しては縦に伸びる性質とあわせてヘアアイロンの形の方が良さそうという話が出たので3Dモデルあればどなたかお願いします…!
今後の改善点
- 元に戻す機能:スケール変更したボーンslotを記憶してコンテキストメニューから1つ前に戻すとかできそうって話をJPチュートリアルワールドで話しました
- 切ったものをその場に残すよう変更*7:ハサミで切ったしっぽを自分につけたいというツイートがあったのでできたら面白そうです(個別コピーが難しく全体コピーした上でスライサーを使わないと難しいらしい…?)
- 安全性のレベル指定:「head_」「bone」「tail」などより広いものとslot名未指定を加えた3段階くらいに(コンテキストメニューから)切り替えできれば便利だとは思いました
- 自分用・他人用切替:コンテキストメニューから切り替えて1つのアイテムに統合できれば見た目で見分けがつかない問題も気にせずに済みます
おわりに
NeosVRを今年8月に始めたばかりで左の数値の意味が分からない状態でもこういった改造ができるので、アイテム作成まではできない方でも改造から入ってみると良いかもしれません。そして詰まった時もNeos内で夜に聞けば詳しい方が教えてくれます。複数人でゲーム作るプロジェクトもあるので気軽に始めてみては…?
Neosアドカレ2022明日(23日目)は りんきさんです。楽しみです!
アドベントカレンダー、最後までお楽しみください。
以上、月光原澪でした🌙
*2:プロジェクトセカイ カラフルステージ! feat.初音ミク
*3:この記事中で「Neos」「NeosVR」とあるものはNeos VRと同義です。
*4:正確には一部のスケールを極めて小さくして見えなくする→そのため複数の髪束を1つのボーンにすると先端でくっつくような形になります。
*5:執筆時点では現実と同じように切ったものは戻せないので戻したければアバターをもう一度着替え直す必要あり
*6:VRoid Studioで作った3Dモデルがhairとなり、共有フォルダのアバターを試したところponytailだったため。必要に応じて簡単に変更できます。
*7:※切ったものはスケールを小さくしているだけなので複製して出す必要あり