LightwaveのLscriptによる不連続UV編集(2)

以前紹介したUV編集プラグインに PolyUVFitを追加しました。
このプラグインを実行するとこのようなウィンドウが開くので、Fitと Alignを選んでOkボタンを押して使用します。
UV座標が0から1の幅になるように拡大、縮小します 。

それぞれがどのような効果になるかはScaleの値を参考にしてください。
alignはUVの原点(0,0)に移動させたくない場合にLeft Bottom以外を選択してください。

その他のプラグインについてはポイント選択による操作対象をフィルタする機能を削除しました。
今回のプラグインと一緒に入れてあります。

プラグインファイルはこちら

■共通的な使い方
このプラグインはUVビューで選択しているポリゴンのUVを操作します。
何も選択していない場合は UVビュー 全体を対象とします。

【Lightwave】UVMapをSVGファイルに出力するプラグイン

以前作ったUV編集プラグインがUV座標を取得できていたので、SVGファイルに出力できそうでしたので作ってみました。

プラグインファイルはこちら

このプラグインはLightwaveのモデラーで作成したUVマップをSVG形式のファイルで出力します。
下記の機能もあります。
・選択したポリゴンのみ出力
・ColorMapを作成すればそれぞれのポリゴンを指定した色で出力
・UDIMへの対応としてUVの出力位置の指定

■使い方
1、TextureMapを作成して、それを選択します。
2、出力したいポリゴンを選択します。(未選択の時は全部が対象になります)
3、UVtoSVGOutputプラグインを実行します。
実行するとウィンドウが開くので色やUV位置等を設定します。
4、次にファイルダイアログが表示され、ファイル名を決めて保存します。
5、SVGファイルはWebブラウザ、または対応しているソフトでご使用ください。
※ポリゴン数が多いと読み込めずにフリーズするソフトもありましたのでご注意ください。

■補足
色 はポリゴンの最初の頂点が持っている色情報を元に出力します。
ColorMapが無かったり、色情報を持っていないポリゴンは設定ウィンドウのNo Map Colorで指定した色で出力します。
色を変えたいポリゴンのポイントが結合している場合は分離すると確実に色を指定できます。
分離させたくない場合の対策として、出力されるSVGファイルの構造は単純ですので直接テキストを編集するのも検討してみてください。

【LightWave】スケルゴンのウェイト設定用Pythonプラグイン

このプラグインはGenomaを使用してモデルをウェイトマップ込みで設定したい場合を想定して作成しました。
3rd Powers様のPaint Weightsプラグインにボーン名のウェイトマップを自動作成する便利な機能があるので、 その後モデラーに戻ってウェイトマップをスケルゴンに設定するという作業を簡単にします。
プラグインは2つでそれぞれ以下の動作をします。

AssignWMapSkelegon.py
選択しているスケルゴンに同じ名前のウェイトマップが存在していたらそのウェイトマップを割り当てます。

ChangeWeightGenoma.py
選択しているスケルゴンのGenomaのウェイト関連の設定を一括で変更します。
(スケルゴンにGenomaのデフォルトタグを設定しておいてください)

ダウンロードはこちら

このプラグインはLightwave 2015以上で動作します。
このプラグインは無保証です。
このプラグインの使用を通して生じたいかなる損害、不利益に対しても、制作者は責任を負わないものとします。
再配布、改造などは自由に行ってください。

初めてPythonで プラグインを 作成しましたが本当に情報が少なく、かなり苦労しました。
本プラグイン作成に当たって Hand to Mouse.様のblogを大変参考にさせていただき、なんとか完成させることができました。
この場を借りてお礼申し上げます。
ありがとうございました!!

MetalFortを少し更新(v1.3)

QiitaのUnity #3 Advent Calendar【Unity】予測射撃のスクリプトの記事を投稿しました。
スクリプトを確認するのに良い機会になりました。
そのついでに自作ゲームMetalFortに円形予測射撃を実装しました。
何気なくプレイしていると気付くか分からないぐらいの変化ですが、精度が上がって少しだけ避けにくくなっていると思います。
それ以外は特に大きな変更はありませんが、ダウンロードコードをお持ちの方は是非ダウンロードして遊んでみてください。

デジゲー博2017のカードについて

去年のデジゲー博2017で頒布したMetalFortのCONCAカードが2018年11月12日で期限切れになりますが、
下記のURLから同じシリアルコードでダウンロードできるように設定しました。

https://zeroplant.sakura.ne.jp/dl/mf/

※こちらはパスワード入力は5回までと制限があります。(更新時にリセットします)
※こちらのサーバはCONCA様とは関係ありませんので問い合わせ等は当サイトのメールアドレスへご連絡ください。

デジゲー博2018終了

デジゲー博2018無事終了しました。
参加された皆さんお疲れさまでした。
当サークルまでお越しいただいた方ありがとうございました。
遊んでもらって直接感想を頂けたり、そのまま雑談が始まったりと
開発とユーザーとの距離が近くて本当に楽しい良いイベントでした。
来年こそは完成版をお届けできるようにがんばりたいと思います。

デジゲー博2018の進捗

制作中のゲーム、MetalFortは今回も体験版になりました・・・。
今回の大きな更新としては敵がアイテムを落とすようになり、弾が変更できるようになりました。
他には仮設定になりますがブースターを追加しました。
バージョンごとにだいぶ仕様が変わっていきそうな予感がしますが、今後もお付き合いください。

デジゲー博2017で頒布したCONCAカードが11月12日で期限切れになります。
せっかく購入して頂いたのでこちらのサイトから同じシリアルコードでダウンロードできるようにしたいと考えてます。
とはいえ、デジゲー博2018では新たにカードを用意しましたので応援してもらえるとうれしいです。
試遊もできますので是非デジゲー博に遊びに来てください。

【Unity】プレハブ用のオブジェクトプールを作ってみた

■このオブジェクトプールの特徴

よくあるオブジェクトを非アクティブ状態にしてプール。
プレハブのInstanceIDで管理するのでリストの登録が不要。
片方向リンクリストなので高速。
導入時のスクリプトの変更が少ない。
プール時だけ管理する為、普通にDestroyしても影響なし。
シーンに直接配置した場合はプールせずにDestroyする。
プレハブごとに初期化とプール時のイベントを登録。
オブジェクトプールマネージャのサンプルを付属。

ダウンロードはこちら
■ファイル構成

ObjectPool.cs :オブジェクトプール本体のスクリプト(シングルトン)
ObjectPoolItem.cs :プールしたいプレハブのルートに追加するスクリプト
ObjectPoolManager_sample.cs :プールする数を調整するスクリプトのサンプル
readme.txt :オブジェクトプールの説明

■使い方
  1. プレハブにObjectPoolItemコンポーネントを追加する。
  2. プレハブ生成はusing A_rosuko.ObjectPool;を追加して
    Instantiate(プレハブ, pos , qt);を下記に書き換えてください。
    ObjectPool.Instance.GetGameObject(プレハブ , pos , qt);
  3. プールはusing A_rosuko.ObjectPool;を追加して
    Destroy(gameObject);を下記に書き換える。
    ObjectPool.Instance.SleepGameObject(ObjectPoolItem);※ObjectPool.Instance.SleepGameObject(gameObject);でも動作しますが、
    内部でGetConponent<ObjectPoolItem>()してますのでObjectPoolItemをキャッシュして渡す方が速いです。
  4. 初期化などが必要であればエディタのインスペクターからOnEventWakeUpやOnEventSleepイベントに関数を登録してください。
■仕組み

オブジェクトプール本体のDictionaryでリンクリストの先頭を作成する。
DictionaryのキーはプレハブのInstanceIDとする。
各オブジェクトのObjectPoolItemコンポーネント側で接続するリンクリストの先頭をキャッシュしておき、先頭の次に接続する。
プールから取り出す時はリンクリストの先頭の次から取り出し、その次を先頭に接続しなおす。

■保証及び責任、著作権について

本ソフトウェアは無保証です。
本ソフトウェアの使用を通して生じたいかなる損害、不利益に対しても、制作者は責任を負わないものとします。

ObjactPool:Copyright 2018 A_rosuko
Released under the MIT license

■参考

Unity公式チュートリアル(第01回 オブジェクトプーリング)
Unityマニアックス(第1章オブジェクトプーリング)
wikipedia(Object pool pattern)

LightwaveのLscriptによる不連続UV編集

以前Twitterで公開していたLightwaveのプラグインを置いておきます。
LightwaveでUV編集がやりにくいので数値入力できるものを作ってみたのですが、少し中途半端なものになりました。
Lscriptを調べてみたところ、非連続UVのポイントを選択している状態を取得する方法がわからず、詳しく説明すると

  1. Lscriptではモデル空間上のポイントID+ポリゴンIDの組み合わせで非連続UVのポイント座標を取得と設定はできる。
  2. UVマップで選択したポイントからはモデル空間上のポイントIDが渡されている。

という理由から1ポリゴン+1ポイントで操作する場合は問題ないですが、
多ポリゴン+多ポイントになるとUVマップで選択したポイントにモデル空間で同じポイントのIDが含まれてくるので、意図しないポイントが操作対象になります。
(UVマップ上で選択しても同じモデル空間のポイントが一緒に動く)

今回作ったプラグインはポリゴン選択のみの操作には使えるはずです。
ポリゴン+ポイントの選択はおまけ機能と思ってください。

今回作ったプラグインはこちら

そのうち、作り方がわかったら修正したいです。
詳しい方いましたら教えていただけると嬉しいです。

■下記補足

  • UVのポイント操作は標準で入っている「UV値変換」がおすすめです。
    (こちらは逆に非連続UVのポリゴン選択の操作がダメ)
  • UVのポリゴン選択に「Select UV Island」と一緒に使うと便利です。