DAZ Studioのスクリプトを自作する

DAZ Studioのスクリプトを使って、省力化したいなーと思ったので、ざっくり情報を集めてみた。

スクリプトの開発環境

DAZ Studio IDE

IDE(Integrated Development Environment)=統合開発環境。

DAZ Studioのスクリプトは、QtScriptの拡張でDAZ StudioのAPIにアクセスすることで自動操作などをおこなえるよう。フィーリングはJavascriptに似ているっぽい。

DAZ StudioのWindow→Pane(tabs)→Script IDEから呼び出し可能。

デバッガがついていて、ソースコードをステップ・バイ・ステップで実行できる。(Debug→Debuggerまたは、Shift+F5でデバッガ起動)

サンプルスクリプトを1行づつ動かして、実際の画面の変化を確認して「このコードはこういう動きになるか…」って確認するのに役立ちそう。

Visual StudioでDAZ Studioのスクリプトを開発

DAZ Script開発環境の構築方法[DAZ Studio] – Qiita

本気で長めのスクリプトを作りこむ場合は、こういう環境の方がいいのかも。

TypeScriptというJavascriptの親戚みたいなコードで記述してから変換、という形を取るのだそう。

TypeScript慣れしている人用なのかな。

DAZ Scriptの書き方

とりあえず、こんな感じで、 (function(){})(); でコードを囲っておけば動くっぽい。

この書き方をなんと呼ぶのかとか、そういうことは知らない。

(function(){
//ここにコードを書くと動く
})();

たとえば、選択状態のパーツから先端までを全て非表示にするスクリプトを当てはめてみる。

参考)[DAZ] Script to hide all children nodes | F95zone ←メッチャエロ広告でるので注意

(function(){
  var startNode = Scene.getPrimarySelection();
  
  if ( startNode ) {
    var nodes = [ startNode ];
    nodes = nodes.concat( startNode.getNodeChildren( true ) );
    for ( var n = 0 ; n < nodes.length ; n++ ) {
      nodes[ n ].setVisible( false );
    }
  }
})();

これを、Script IDEにコピペして、Executeボタンをクリックすると動く。ファイル名.dsaでファイルに保存して、Content LibraryからダブルクリックしてもOK。

なお、setVisible( false )を、setVisible( true )に変更すると、指定パーツから先端までが表示状態に変更される。

スクリプトの実行方法

Content Libraryに登録してダブルクリック

スクリプトファイルを用意する。
Content Libraryの適当なフォルダにスクリプトをコピー。

※Content Libraryの指す実際のフォルダは、右クリックして「Browse to Folder Location」を選ぶとエクスプローラーが開く。

開いたフォルダにスクリプトをコピーして、Refresh(再描画)を選ぶと、スクリプトが表示される。

アイコンは「アイコン画像がないよ」みたいなのが割り当てられてカッコ悪いけど、コレを解消するのは超面倒くさいので、気にせず使おう。

画面上部メニューからスクリプトを呼び出せるようにする

毎回Content Libraryなんて、使ってらんねー!

フォルダの迷宮で迷子になるわ!

というあなたは、メニューにスクリプトを登録することも可能だ。

Content Libraryのアイコン上で右クリック→Create Custom Actionを選択

Create Custom Actionウインドウが表示されるので、Root MenuをScriptsにして、Acceptをクリック

なお、ここでSubmenuを選ぶと、メニューを階層構造にすることができる。

以下のメッセージが表示される。「指定したスクリプトのカスタムアクションが作成されました。Scriptsメニューから実行可能です」というような意味だ。

たしかに、画面上部のScriptsに、先ほどのスクリプトが登録されている。

登録済みのスクリプトをメニューから消す方法

Window→Workspace→Customizeを選択


日本語化を試していたので、表示が日本語になっているけど

Customize DAZ Studioウインドウが表示される。

ActionsタブのCustomから、追加したスクリプトを探して右クリック→Delete Custom Actionを選択

と、いつでも消せるので雑に追加して色々試そう。

DAZ Studio スクリプト関連情報

DAZ Studioのスクリプトマニュアル

Scripting [Documentation Center]

英語。最初にざっくり日本語翻訳しながら流し読みすればいけそう。

やっぱ流し読みには日本語がいいなぁ。

サンプルスクリプトも多数用意されてるので、チュートリアルがわりにIDEで動かしながらフィーリングをつかんでいきたい。

スクリプトの種別 dsa,dsb,dse

すごい種類ある。

File Extensions [Documentation Center]

DAZ Script2の拡張子に絞ると3つで、dsa、dsb、dseがある。

.dsaは、アスキー形式。テキストエディタで開いて読める。

.dsbは、バイナリ方式。読めない。アスキーに変換する方法もあるのか?

.dseは、encrypt(暗号化)された形式。

スクリプトのサンプル

関節limit一覧表示などのスクリプト

自作DAZ Script | lps da DAZ Studio user

lps da DAZ Studio userさんによる、公開スクリプト。

詳細なスクリプトの解説も掲載あり。

Github(無料で使えるソースコード管理サービス)に、各種スクリプトが公開されているので、ありがたく見させてもらおう。

lowpolysnow/DAZStudioScriptSet: DAZ Studioで使えるスクリプト集です。

ポーズコンバーター

DAZ STUDIO 無料ポーズ変換 G1、G2、G3、G8間でコンバート自在

旧フィギュア~最新フィギュア間でポーズコンバートができるスゴイやつ。

素晴らしい。

ランダムモーフ

Daz3D Morphs Randomizer – Script – ShareCG

モーフパラメータをランダムに設定するスクリプト

アイテム表示・非表示

HIDE and SHOW – Daz Script

指定したアイテムが表示されてたら非表示、非表示だったら表示するスクリプト。透明度(Opacity)を変更するっぽい。

ランダム表情(Genesis)

Genesis Expression Randomizer – Script – ShareCG

Genesis用のランダム表情。

大きな文字でパラメータパネル

DAZフォーラムに投稿されていたスクリプト。

「いつか、DAZ本体に実装されるといいんですけどねっ!」という希望と絶望の入り混じったコメント入りで公開されていた。

A script to control a selected Property, with large font size, and Preview buttons – Daz 3D Forums

DAZ Studioインストールフォルダの.dsaファイル

  • C:\Program Files\DAZ 3D\DAZStudio4\resources

上記フォルダの.dsa(暗号化・バイナリ化されてないスクリプトファイル)を眺めているだけでも、ヒントになる…かも。

DAZスクリプト厳選リンク

DAZとPoserのスクリプトWiki

Software/Scripts – Poser and Daz Studio Free Resources Wiki

大量。すでにやりたいことがスクリプト化されて公開されているかも知れない。sharecgにはお宝スクリプトがゴロゴロしているのかも。

目についたスクリプトをピックアップしておこう。

ShareCGのScriptのページ

scripts Sharecg

ShareCGのDAZ Studio用ページ。

一部、dsa(テキストエディタで読める)形式のスクリプトが公開されている。

自作スクリプトへの第一歩

とりあえず、Geometry Shellの各パーツを自動で非表示にするスクリプトを作りたい。

Geometry Shellを生成するスクリプトをDAZ公式サイトで見つけたので、こいつをベースに作って行こうと思う。

Create Geometry Shell [Documentation Center]