こんばんは!
以前からDelphi2010を使っていましたが、最近になってDelphiXE8を
触り始めた者です。今までVCLでプログラミングしていたので、
FMXの事はまだまだ良く判っていません。
そこで質問させて頂きたいのですが、
TModel3Dコンポーネントで3Dデータ(*.obj、*dae、*.aseファイル等)
を読み込める事が書かれたサイトを参考にTModel3Dコンポーネントを
3Dフォーム上に置いてみたのですが、3Dデータを読み込めるMeshCollection
プロパティがオブジェクトインスペクタに存在しないのです。
項目自体が存在していないので、それ以上先に進めず、困ってます。
どなたか同じ様な現象で、これで解決したという情報をお持ちの方は
おりませんでしょうか?
[環境]
CPU:i5プロセッサ
メモリ:4GB
OS:Windows 7 ( 32bit )
1つのPCにDelphi2010とDelphiXE8がインストールされています。
WindowsUpdateは適用されています。
DirectXは11と表示されていました。
現在はプログラムソースからの読み込みを行っていまして、
3Dフォーム上にTModel3Dコンポーネントを配置。
procedure FormShow( Sender : TObject );
begin //
Model3D.LoadFormFile( FilePath + FileName + '.dae' );
end;
等として、頂点情報のデータのみは読み出せるようになっています。
※ マテリアルデータは後日考えるとして(汗
何故、TModel3DのMeshCollectionプロパティが表示されていないのか
ご存知の方、宜しくお願いします。
参考にしたサイトを書くのを忘れていました(汗
http://blogs.embarcadero.com/teamj/2012/09/13/3427/
http://ht-deko.com/techf006.html
http://afsoft.jp/program/delxe3/p12_320.html
どうぞよろしくお願いします。
ん?MeshCollection プロパティならオブジェクトインスペクタに出てますよ?
[表示形式 | 名前順] なら Name プロパティのすぐ上に。
DEKO様、返信有難う御座います。
しかしながら、当方のDelphiXE8のTModel3Dコンポーネントの
オブジェクトインスペクタ[表示形式|名前順]では、
Cursor
Depth
DragMode
Height
HitTest
LiveBinding
Locked
Name
Opacity
Position
・
・
・
と並んで表示されており、MeshCollectionプロパティが見当たらないのです。
[表示形式|カテゴリ別]に切り替えてみたのですが、ありませんでした。
[表示する項目]は[すべて]になっておりました。
DEKO様のサイトも参考にさせて頂きましたが、MeshCollectionプロパティの
[…]をクリックする事が既に叶わないので、途方に暮れている次第です(汗
ちなみにプログラムソース上で、
procedure FormShow( Sender : TObject );
begin
Model3D1.
を入力すると.を入力した直後にプロパティやメソッドの一覧が表示されると
思いますが、そのリストの中にはMeshCollectionプロパティはありました。
今はもう最後の手段としてDelphiXE8をインストールしなおす事しか思いつきません(汗
手元のXE8ではLockedとNameの間にMeshCollectionがありますね。ただしプロパティ名"MeshCollection"は
灰色になっています(動作上の制限はなさそう)。ところでXE8はSubscription Update 1適用済ですか?
通りすがり様、返信有難う御座います。
Subscription Update 1を調べてみて、当方のDelphiXE8には未適用でした。
そこで、DelphiXE8の[更新プログラムの確認]を管理者権限で起動した所、
アップデートが1つだけ表示されておりました。
当方は、アップデート サブスクリプションに未加入である為、
General Update 1(一般ユーザー向け)をダウンロードして適用しました。
念の為、もう1度[更新プログラムの確認]を行った所、
「no updates available」という簡単なダイアログが表示され、無事適用された事を確認しました。
これでTModel3DコンポーネントのMeshCollectionプロパティが現れる様になったのかと
思いきや、相変わらずプロパティが無い状態(灰色表示でもない)でした。
[XE8 Update 1 のリリース ノート]の最後の方に記述されている
[XE8 Update 1 のバグ修正一覧]を見たのですが、
[RSP-10827]メッシュプロパティの表示がどうのとか書かれていました。
これが今回の件に関係があるのかはわかりませんが、
未だにMeshCollectionプロパティが無い状況です。
Subscription Update 1(サブスクリプション加入者向け)でないとダメでしょうか?
XE8のTModel3D.MeshCollectionの定義に関わるソースを確認してみましたが、オリジナル、Subscription Update 1、
December 2015 Updateのいずれでも
| TModel3D = class(TDummy)
| ...
| published
| property MeshCollection: TMeshCollection read FMeshCollection;
| end;
と同じですので、Updateの適用の有無で特に違いはないのではないかと思います。
ちなみにオブジェクトインスペクタのコンテキストメニューの設定は
表示する項目→アクション、その他、ドラッグアンドドロップ/ドッキング、レイアウト、ローカライズ対象、表示のすべてがチェックオン
表示形式→名前順
表示→インスタンス一覧、フィルタボックス、クイックアクション、ステータスバーがチェックオン(説明パネルのみチェックオフ)
となっていました。
通りすがり様、有難う御座います。
通りすがり様の書かれた内容を1つ1つ確認し、間違いが無い事を確認しました。
ところが、オブジェクトインスペクタであれこれしていると、
右クリックのポップアップ:プロパティで[オブジェクトインスペクタの設定]と
いう物を見つけました。
私は、これはオブジェクトインスペクタの表示スタイルに関する物だという認識でしたが、
オプショングループボックスの中に[読み取りのみプロパティの表示]というチェックボックスが
あるのに気が付きました。
唯一これだけがチェックが入ってなく、これをチェックした所、
オブジェクトインスペクタにMeshCollectionプロパティが出てきました。
有難う!
チェックが入っていない状態でチェックを付けてOKボタンを押しても直ちに
オブジェクトインスペクタに反映されない為、一度別なコンポーネントを
選んでからTModel3Dに戻ってみると反映されるようです。
購入以来、DelphiXE8はあまり触っていなく、デフォルトでそうなって居たのか、
誤ってチェックを外してしまったのか判りません。
MeshCollectionプロパティは読み込み専用だったのですね。
DEKO様、通りすがり様、有難う御座いました。
ああ、MeshCollectionがグレーだったのはreadのみのプロパティという意味だったのですね。
ひょっとしてスピード設定でDelphi 5とかVisual Studioエミュレーションになってしまっていたとかかもしれませんね。
いずれにしても解決してよかったです。
ツイート | ![]() |