Shade Scripts
Windows版 Shade用スクリプト(JScript)です。小物ばかりなのでダウンロードファイルは用意していません。コード(白文字)部分をメモ帳等のテキストエディタにコピー&ペーストして拡張子".js"を付けて保存してください。
 
表面材質継承.js
  • 選択形状に上位パートと同じ表面材質を設定します。表面材質が見つかるまで遡ります。
  • T_BrowserExtPlusに組み込む際には"SucceedSurface.js"等と半角のファイル名で保存してください。
  • ウィルス対策ソフトによっては警告が表示される場合がありますが無視してください。
    var fso, sTempFile, TemporaryFolder = 2;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    sTempFile = fso.GetSpecialFolder(TemporaryFolder);
    sTempFile += "\\temp.shdsfc";
    // XShade.Message(sTempFile);
    
    var nSelectedHandle = XShade.FirstHandle();
    
    while (XShade.SelectParent(1))
    {
        if (XShade.HasSurfaceAttributes)
        {
            XShade.SaveSurface(sTempFile);
            if (XShade.SelectByHandle(nSelectedHandle))
            {
                XShade.LoadSurface(sTempFile);
            }
            fso.DeleteFile(sTempFile);
            break;
        }
    }
    			
INハンドルコピー.js
  • 選択されているコントロールポイントのインハンドルの座標を記憶します。
  • ウィルス対策ソフトによっては警告が表示される場合がありますが無視してください。
    var p;
    var x, y, z;
    var msg;
    var sTempFile;
    
    p = XShade.FirstActiveControlPoint();
    if (p >= 0)
    {
        if (XShade.HasInhandle(p))          // アウトハンドルを記憶する場合はHasInhandleをHasOuthandleに書き換える
        {
            x = XShade.InHandle(p, 0);      // 
            y = XShade.InHandle(p, 1);      // アウトハンドルを記憶する場合はInHandleをOutHandleに書き換える
            z = XShade.InHandle(p, 2);      // 
            var fso = new ActiveXObject("Scripting.FileSystemObject");
            sTempFile = fso.GetSpecialFolder(2);
            sTempFile += "\\vector.txt";
            var a = fso.CreateTextFile(sTempFile, true);
            a.WriteLine(x);
            a.WriteLine(y);
            a.WriteLine(z);
            a.Close();
        }
        else
        {
            XShade.Message("ハンドルなし");
        }
    }
    			
INハンドル貼り付け.js
  • 選択されているコントロールポイントのインハンドルにIN(OUT)ハンドルコピー.js記憶されたイン(アウト)ハンドルの座標を適用します。
  • ウィルス対策ソフトによっては警告が表示される場合がありますが無視してください。
    var p;
    var x, y, z;
    var sTempFile;
    
    p = XShade.FirstActiveControlPoint();
    if (p >= 0)
    {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        sTempFile = fso.GetSpecialFolder(2);
        sTempFile += "\\vector.txt";
        var f = fso.OpenTextFile(sTempFile, 1);
        x =  f.ReadLine();
        y =  f.ReadLine();
        z =  f.ReadLine();
        f.Close();
        XShade.InHandle(p, 0) = x;          // 
        XShade.InHandle(p, 1) = y;          // アウトハンドルに適用する場合はInHandleをOutHandleに書き換える
        XShade.InHandle(p, 2) = z;          // 
    }
    			
QTVRオブジェクト用モーション設定.js
  • QTVRオブジェクトの素となるムービー用モーション設定を行います。
  • オブジェクトの中心(回転の中心)に三次元カーソルを置いてからスクリプトを実行してください。
    XShade.BeginDialog(0);
    XShade.AppendIntDialogItem("縦分割");
    XShade.AppendIntDialogItem("横分割");
    XShade.IntPropertyValue(0) = 19;
    XShade.IntPropertyValue(1) = 36;
    
    if (XShade.AskDialog())
    {
    	var center_x = XShade.CursorPosition(0);
    	var center_y = XShade.CursorPosition(1);
    	var center_z = XShade.CursorPosition(2);
    	var target = XShade.FirstHandle();
    	XShade.CreateRotatorJoint(center_x, center_y, center_z, center_x + 1.0, center_y, center_z) ;
    	var x_joint = XShade.FirstHandle();
    	XShade.CreateRotatorJoint(center_x, center_y, center_z, center_x, center_y + 1.0, center_z) ;
    	var y_joint = XShade.FirstHandle();
    	XShade.Select(target);
    	XShade.PlaceChild(0);
    	XShade.PlaceChild(0);
    	var x_rot = XShade.IntPropertyValue(0);
    	var y_rot = XShade.IntPropertyValue(1);
    	var x_interval = 1.0 / (x_rot - 1);
    	var y_interval = 2.0 / y_rot;
    	var frames = x_rot * y_rot;
    	XShade.TotalFrames = frames;
    	XShade.StartFrame = 0;
    	XShade.EndFrame = frames - 1;
    	var x_value = 0.0;
    	var y_value = 1.0;
    	var seq = 0;
    	XShade.Select(x_joint);
    	XShade.CreateKeyPoint(seq);
    	XShade.SequenceJointValue = x_value;
    	XShade.Corner = true;
    	XShade.Select(y_joint);
    	XShade.CreateKeyPoint(seq);
    	XShade.SequenceJointValue = y_value;
    	XShade.Corner = true;
    	for (x = 0; x < x_rot; x++)
    	{
    		y_value = -1.0 + y_interval;
    		seq += (y_rot - 1);
    
    		XShade.Select(x_joint);
    		XShade.CreateKeyPoint(seq);
    		XShade.SequenceJointValue = x_value;
    		XShade.Corner = true;
    		XShade.Select(y_joint);
    		XShade.CreateKeyPoint(seq);
    		XShade.SequenceJointValue = y_value;
    		XShade.Corner = true;
    		seq += 1;
    		y_value = 1.0;
    		x_value -= x_interval;
    		XShade.Select(x_joint);
    		XShade.CreateKeyPoint(seq);
    		XShade.SequenceJointValue = x_value;
    		XShade.Corner = true;
    		XShade.Select(y_joint);
    		XShade.CreateKeyPoint(seq);
    		XShade.SequenceJointValue = y_value;
    		XShade.Corner = true;
    	}
    	XShade.SequenceValue = 0;
    }
    XShade.EndDialog();
    			

 

動作環境 :WindowsXP 日本語版
   Shade 6

 

    ソフトウェア一覧のページに戻る