Silhouette Viewer

[MaxScript]
 シーン内にあるオブジェクトのシルエットを表示するスクリプト。
ボタンがオンになっている間、オブジェクトカラーを白に変更し、ビューポートのシェーディング表示をオブジェクトカラーモードに変更しています。
ボタンをもう一度押すかスクリプトを閉じると、表示も元に戻ります。

This script displays the silhouette of objects by pressing a button.
The mechanism is to change the object color to white and change the viewport's shading display to object color mode.
If you press the button again or close the script, the display will also return.



Download:
Silhouette_Viewer_v08.ms

Vertex Color Converter

[Maxscript]
頂点カラーの色を白黒からRGB(その逆も可)などに変換するスクリプトです。
This script can convert vertex color BlackWhite to RGB, RGB to BlackWhite.




使い方:
オブジェクトを選択した状態で各ボタンを押します。
EditablePolyでないと動作しないのでご注意下さい。
Inverseにチェックを入れると結果が反転します。


How to use:
select object and press button.
only use for EditablePoly object.
If you want inverse result, please check "Inverse" check box.


Download:
Vertex_Color_Converter_v003.ms 

Create Framed Camera

[MaxScript]
 オーバースキャンの範囲を目隠しするメッシュが付いたカメラを作成するスクリプトです。
3dsmax2016以降で搭載されたPhysicalCameraにも対応。
(maxの仕様で、カメラのミリ数(FOV)を変更した後は、タイムスライダーで時間を移動させないとフレームのスケールが変更されないのでご注意下さい。)
 About Create Framed Camera:
This maxscript create camera that have frame to hide overscan area.






使い方:
・Inside Width、 Inside Height
内側のフレームサイズ(解像度)を入力して下さい。

・Overscan Width、 Overscan Height
外側(オーバースキャン)のフレームサイズ(解像度)を入力して下さい。

・Create Physical Camera
これをチェックすると、3dsmax2016以降で搭載されたフィジカルカメラで作成されます。

・CreateFramedCameraボタン
フレーム付きカメラを作成します。

How to use:
Enter inside and Overscan Width/Height resolution.
Press "Create Framed Camera" BUTTON.
(If you want PhysicalCamera, check "Create Physical Camera". only over ver.2016)


Download:
Create_Framed_Scan_v005.mse


Move To Surface

[MaxScript]
 選択したオブジェクトを別のオブジェクトの表面に接地させるスクリプトです。
 This script allows you to glue selected objects to surface.
Move To Surface
 ■使い方
設置させたいオブジェクトを選択。
Move To Surfaceボタンを押して、地面となるオブジェクトをピックします。

■Update
v03:
Bbug fixed for Group and Assembly objects.
グループ、アセンブリに対して接地がうまくいかないバグの修正

Download:
Move_To_Surface_v03.ms

Cam Overscan

[MaxScript]
 カメラに映る範囲を拡張した(オーバースキャンされた)新たなカメラを作成するスクリプトです。
指定したカメラと同期し、FOV(レンズのmm数)を自動調節することでオーバースキャンを行います。
また、元カメラのレンダリング範囲を表示するシェイプも作成されます。
About Cam Overscan:
This maxscript allows you to create new overscaned camera.
Transform and FOV of new camera will synchronize with old camera.




基本的な使い方:
オーバースキャンしたいカメラビューをアクティブにし、
オーバースキャン前と後のレンダリング解像度を入力して Create OS Cameraボタンを押します
How to use:
Enter old and new Width/Height resolution.
Make camera view active that you want overscan.
Press << Create OS Camera >> BUTTON.

 元のカメラとオーバースキャンカメラが同期するため、一度スクリプトからカメラを作成したら、元のカメラを調整してもその変更がオーバースキャンカメラにも自動で反映されるようになりました。
 ただし、元のカメラを手動で削除するとオーバースキャンカメラが正しく動作しなくなるため、削除はBake OS Cam and Delete Oldボタンから行う必要があります。
これを使用するとFOV値に対して、指定した範囲の全フレームでキーが打たれます。


Download: 
Cam_Overscan_v055


Biped Scaler


[MaxScript]
選択した複数のBipedボーンにスケールXYZコントローラーを割り当て、スケールアニメーションをできるようにするスクリプトです。
About Biped Scaler:
This script allows you to add scale controller to selected multiple biped bones.


■使い方
スケールアニメーションを行いたいBipedボーンを選択し、スクリプトのボタンを押すと、スケールXYZコントローラーがBipedボーンに追加されます。

How to Use:
Select Biped bones and press button.

Comparison Preview

[MaxScript]
  AとBの2つのアニメーションプレビューファイルを作成することで、比較をしやすくするスクリプトです。
作成された2つのプレビューファイルは、Ram Playerで直接的に比較することもできます。

This script help you to compare animation preview file.
you can compare  directly by Ram Player.


Compare by Ram Player
UI image

 作成されるプレビューファイルはmaxの通常のプレビューが作成されるフォルダ(デフォルトでは、
C:\Users\UserName\Documents\3dsMax\previews)に自動的に、それぞれ_scene_A.avi、_scene_B.aviという名前で作成されます。

Preview file created by this script is located in default preview directory. the name is _scene_A.avi and _scene_B.avi.


Download: Comparison_Preview

function: Return one of instance from array


 This function return one of instance from array. If there are multiple set of instance in array, return multiple object.

 配列内のオブジェクトのインスタンス関係を調べ、インスタンス関係にあるオブジェクトのうち1つを代表として返す関数。 インスタンス関係にあるオブジェクトの組みが複数の場合、複数のオブジェクトを返します。

-- FUNCTION check relationship of objects in array, sampling instance
fn extract_instance_one obj_array = (
 local i = 1 --Initialize
 
 while i <= obj_array.count do(
  local j = i + 1 --Initialize
  
  while j <= obj_array.count do(
   if areNodesInstances obj_array[i] obj_array[j] == true then( 
    deleteItem obj_array j 
   )else(
    j = j + 1 --Update j
   )
   print("a count is " + obj_array.count as string)
  )
  print("Loop count  " + i as string)
  i = i + 1 --Update i
 )
 return obj_array
)


--using example: extract one of instance from selection
a = selection as array
select (extract_instance_one a)

function: array shuffle function (make an array random)


very simple function to shuffle array in maxscript.

配列内のデータをランダムに並べ替えるだけのシンプルな関数です。