• 締切済み

XSIの選択についてです

XSI初心者です。 XSIでマテリアルをアサインしている面だけを選択出来る方法をさがしています。 (MAYAでいうとselect object with material) オブジェクトを選択はできるのですが、面だけ選択ができなくて困っています。 やりたい事としては ・素材ごとにマテリアルを分けてアサインしたモデルがあり、 面ごとにクラスタを設定したいです。(シーンはMAYAから.xsiにして読み込みしました。) 、 現状手動で面を選択する方法しかわからない状態なので、ご解答よろしくお願い致します!

みんなの回答

  • i-q
  • ベストアンサー率28% (972/3409)
回答No.1

3Dならこっちで質問した方が詳しい回答が、 得られると思う。 http://stmomo.jp/modules/newbb/viewforum.php?forum=3

関連するQ&A

  • <Blender>同じマテリアルを持つオブジェ選択

    Blenderプロジェクト内にある多数のオブジェクトの中から、指定したマテリアルを持つオブジェクトだけを全て選択したいのですが、その方法かスクリプトはありますか? ひとつずつ手動で選択していくのは非常に大変です。 希望としては マテリアルを指定し、そのマテリアルを持つオブジェクトをプロジェクト内から選択。かつ、複数マテリアルが適用されているオブジェクトに、指定したマテリアルが含まれている場合はそのオブジェクトも選択。 というものです。 =====解決策があれば以下は読まなくて大丈夫です===== 最終手段としては 「プロジェクト内のオブジェクトを全てマージ」 「編集モードに変更」 「全ての選択を解除」 「マテリアルプロパティタブから任意のマテリアルを選択」 「マテリアル窓下にある『選択』を実行」 「目的のマテリアルが適用されている面が選択されたらPで分離」 をすれば指定したマテリアルが適用されているオブジェのみを選択するという「希望に近い」動作はできます。ただし、マージしたことによって原点が移動したり回転情報が統一されてしまったり、ひとつのオブジェクトにふたつ以上のマテリアルが割り当てられている場合は都合が悪かったりしますので、本当に最終手段です。

  • セカンドライフへのオブジェクトインポートの方法。

    セカンドライフ上へポリゴンオブジェクトを配置したいのですが、主要モデリングソフト(MAX, maya, LW, XSI等)で作成した3Dオブジェクトを、セカンドライフに持って行く方法を探しています。 できればスカルプトテクスチャを用いずにインポートしたいと考えています。 宜しくお願いします。

  • [Smarty] register_objectでの配列の扱い

    register_objectメソッドでテンプレートファイルに渡した配列にアクセスする方法がわかりません。 //PHPファイル register_object('data', $obj, 'array') //tplファイル 配列arrayの第一データは、{obj->array[0]}です。 //エラー 配列arrayの第一データは、{obj->array.0}です。 //エラー Smartyマニュアルに、register_objectメソッドについて、 『それはとてもセキュアで、 登録されたオブジェクトはいくつかのメソッドやプロパティを制限する事が出来ます。 しかし繰り返しの処理やオブジェクトの配列への割り当て等の事が出来ません。』 とありますが、これはregister_objectメソッドを使ってオブジェクトを渡す場合、配列にはアクセスできないということなのでしょうか? もし、そうであればassignを使うしかないのでしょうか?register_objectで書くほうがスマートなので、可能であればそちらを使いたいと思っています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数シートの選択

    エクセルVBAで複数シートの選択をしたいのです。 シート名やシートの位置が変更される可能性があるので オブジェクトで指定したいのですが 記述方法が分かりません。 ##シートの位置 Sub mac1() Worksheets(Array(2,5)).Select End Sub ##シート名 Sub mac2() Worksheets(Array("aaa","あああ")).Select End Sub

  • 組み合わせのマッチィングを過去のものと重複させない

    ある研究の素材マッチングで過去に比較したものを重複させないでテストする組み合せを表示するプログラムを作りたいと思っています。 DB table tests id material test1 test2 test3 1 | A | 1 | 1 | 0 2 | B | 0 | 1 | 0 3 | D | 0 | 0 | 1 4 | E | 1 | 0 | 0 5 | F | 0 | 0 | 0 6 | G | 0 | 1 | 1 このテーブルによると素材Aはtest1とtest2に参加しておりそのどちらかに参加している素材B,素材Gとは再び同じtestに参加する必要がなく test1とtest2に参加していない素材D,素材Fはtest4で素材Aとマッチさせることができるという事を表示できるものを作りたいです。 考えましたのは、 $sql='SELECT material,test1,test2,test3 FROM tests WHERE id=?'; $stmt=$dbh->prepare($sql); $stmt->execute(array($id)); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $material=$rec[material]; $test1=$rec[test1]; $test2=$rec[test2]; $test3=$rec[test3]; これでどの素材がどのテストに参加したかを求めその次のtest4でいままでマッチしていない素材のグループを作るには $material=$_POST[material]; $sql="SELECT material FROM tests WHERE $material !=? and test1 !=? and test2 !=? and test3 !=?"; $stmt=$dbh->prepare($sql); $stmt->execute(array($material,$test1,$test2,$test3)); while( $rec=$stmt->fetch(PDO::FETCH_ASSOC) ); $material=$rec[material]; { echo $material; echo '<br>'; } と言う形で書けるかと思うのですが、この方法ですとtest(testと素材の数は次々増えていきます)が増えるたびにデータベースのカラムを足しPHPのsql文を書き足さないといけなくなります。 カラムを増やしていく事があまりいい事ではない様に解釈しています。また都度PHPを書き足すのもどうかという事で設計上改善が必要かと思っていますがその改善案にたどり着くことができません。 なにかより良い設計(PHPの書き方、およびDB設計)がありましたらどうぞどなたかお知恵をお貸しください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 入力フォームでのIF文

    現在、入力フォームを作っているのですが、思った動作にならず、たいへん苦慮しております。どなたか良きアドバイスいただけますと幸いでございます。 <内容> ベースの素材選択部分でで◆オリジナル素材を選択した場合のみ、次のベースカラーの選択でオリジナルしか選択できない様にしたい。 うまく動作せず困り果てています。 どなたかご教授いただけますとたいへん助かります。 どうぞ宜しくお願い致します。 ********************************************************** 以下がうまく動作しないソースです。 ********************************************************** ◆ベースの素材を選んでください<br> <select name="base_material" onChange="javascript:test();"> <option selected>◆ラバー起毛素材</option> <option>◆オリジナル素材</option> <option>◆ジャージ起毛素材</option> <option>◆ジャージ素材</option> </select><br> ベースカラー<BR> <select name="aaa"> <option selected>◆青色</option> <option>◆オリジナル</option> <option>◆赤色</option> <option>◆白色</option> </select> <SCRIPT Language="JavaScript"> function test() { if (document.getElementsByName("base_material")[0].selectedIndex == 1) { document.getElementsByName("aaa").item(0).value = "◆オリジナル"; } else { document.getElementsByName("aaa")[0].style.backgroundColor="white"; } } </SCRIPT>

  • Mayaのテクスチャの固定

    Mayaで作品制作をしているのですが、いくつかのオブジェクトがファイルを開く度にテクスチャが剥がれて真っ黒になってしまいます。一々貼りなおすのも面倒なので、固定する方法を知りたいのですが、良ければご教授お願いします。表示されているエラーメッセージは『// 警告: テクスチャ ファイル F:/Maya/学校/素材/フローリング42.jpg は存在しません。ノード file5』で、verは2010です。テクスチャのファイル名に間違いはありません。

  • プログラムが止まってしまいます

    Visual Studio 2012 c++ でプログラムを動かそうと思っているのですが、デバッグ開始すると画像のようなウィンドウが出て実行途中で止まってしまいます。 呼び出し履歴のint mqoLoadFileのソースを貼ります. int mqoLoadFile( MQO_OBJECT *mqoobj, char *filename, double scale, unsigned char alpha) { FILE *fp; MQO_OBJDATA obj[MAX_OBJECT]; MQO_MATDATA *M = NULL; char buf[SIZE_STR]; // 文字列読み込みバッファ char path_dir[SIZE_STR]; // ディレクトリのパス char path_tex[SIZE_STR]; // テクスチャファイルのパス char path_alp[SIZE_STR]; // アルファテクスチャファイルのパス int n_mat = 0; // マテリアル数 int n_obj = 0; // オブジェクト数 int i; // MaterialとObjectの読み込み fopen_s(&fp,filename,"rb"); if (fp==NULL) return 0; mqoobj->alpha = alpha; memset(obj,0,sizeof(obj)); i = 0; while ( !feof(fp) ) { fgets(buf,SIZE_STR,fp); // Material if (strstr(buf,"Material")) { sscanf_s(buf,"Material %d", &n_mat); M = (MQO_MATDATA*) calloc( n_mat, sizeof(MQO_MATDATA) ); mqoReadMaterial(fp,M); } // Object if (strstr(buf,"Object")) { sscanf_s(buf,"Object %s", obj[i].objname);//ココの実行中に止まる mqoReadObject(fp, &obj[i]); i++; } } n_obj = i; fclose(fp);

  • AutoCad2008 移動コマンドで全選択

    AutoCad初心者です。 組図をある程度描きすすめたところで、間隔がせまく感じたので移動して隙間をあけようと 「移動」ボタンで、オブジェクトを囲み選択すると、囲んでいない部分まで全部選択されてしまいます。 選択範囲のみ選ぶにはどうすればよいのでしょうか。 以前JWCADでも同じことがあったと記憶しています。たしかブロックになっているものが全部選択されてしまったような気がします。 (実際使っているのはAutoCadMechanicalなのですが、そう書くと誰も回答していただけないので) Mechanicalではブロックと似たものでコンポーネントというのがあって、正面図、平面図、右側面図といった具合でひとつの部品をWindowsのフォルダの様なかたちでくくる方法があるので ブロック図形にはしていないのですが。

  • 表示幅を短くしたい

    お世話になっております。 SQL*PLUSの表示の方法で分からないことがあるので 投稿させていただきます。 参考書の「パッケージの再コンパイル」というのをもとに SELECT object_name ,object_type,status FROM user_objects WHERE object_name IN ('TEST_PACK','CALL_TEST_PACK'); というステートメントを入力したのですが OBJECT_NAME ----------------------------------------------------------- OBJECT_TYPE STATUS ------------------ ------- CALL_TEST_PACK PROCEDURE VALID TEST_PACK PACKAGE VALID TEST_PACK PACKAGE BODY VALID と返ってきました。 できれば見やすくしたいので OBJECT_NAME      OBJECT_TYPE    STATUS     ------------     ------------------   ------- CALL_TEST_PACK    PROCEDURE   VALID TEST_PACK        PACKAGE   VALID TEST_PACK        PACKAGE BODY   VALID としたいのですが、上記のコードに何か付け足すだけで 可能でしょうか? それとも、最初から設定する必要があるのでしょうか? よろしくお願いします。