トップページgamedev
995コメント364KB

【初心者】スレを立てる前にココで質問を【Part19】

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2009/03/11(水) 17:57:35ID:teoBVoN1
疑問に思うことがあれば、スレを立てずに、まずはココで質問。
スレッドを立てる前にはローカルルールを読みましょう。
http://pc11.2ch.net/gamedev/

>>980 を踏んだ人は次スレ立てをお願いします。
【アップローダ・避難所・Wiki】
ゲーム製作技術板公式Wiki
http://gamdev.org/w/

ゲーム製作技術板公式アップローダ
http://gamdev.org/up/

ゲーム製作技術板公式掲示板避難所
http://bbs.gamdev.org/gamedev/

ゲーム製作技術板予備
http://yy13.kakiko.com/gamdev/

アップローダー予備
http://gamdev.hp.infoseek.co.jp/

gamdev.orgが落ちるたびにあげてみるスレ
http://pc11.2ch.net/test/read.cgi/gamedev/1107022166/
0151名前は開発中のものです。2009/04/03(金) 21:09:23ID:9GQTE0mS
寿命の壁
0152名前は開発中のものです。2009/04/03(金) 22:06:37ID:rthwESpY
>両立できない壁
>寿命の壁
0153名前は開発中のものです。2009/04/03(金) 22:07:58ID:J7E8Bxxs
世の中壁だらけですね
0154名前は開発中のものです。2009/04/03(金) 22:37:25ID:WQ3uQ4Jj
3Dダンジョンですねわかります
0155名前は開発中のものです。2009/04/04(土) 00:24:59ID:crNEm76O
ナイトロアーは嫌ー
0156名前は開発中のものです。2009/04/04(土) 02:37:59ID:+5D52vgy
>>1
最後の方がなんかせつないなwww
0157名前は開発中のものです。2009/04/04(土) 02:57:35ID:+5D52vgy
誤爆
0158名前は開発中のものです。2009/04/04(土) 17:35:44ID:jk6kZ3P2
頼むから誤爆だけはやめてくれ
0159名前は開発中のものです。2009/04/04(土) 19:53:45ID:mV+s9ach
じゃあ誤探知的な方向で。
0160名前は開発中のものです。2009/04/04(土) 20:56:52ID:bJ31mpY2
誤りに対してやめろと言うのはいかがなものか
0161名前は開発中のものです。2009/04/04(土) 21:50:50ID:0RtCt67o
シナリオ製作でちょっと詰まってるのですが、
シナリオ添削スレみたいなのはあるのでしょうか?
良ければ誘導お願いします。
0162名前は開発中のものです。2009/04/05(日) 00:49:58ID:Lnd+z008
>>160
さては向こう側の人間か!
0163名前は開発中のものです。2009/04/06(月) 16:22:00ID:jaDr3dMp
ゲーム(DirectX)の稼動中に
日本語を入力して変数に取り込みたいんですが、(所謂チャット的な物。)
immでコレを作れるでしょうか?
むしろ、imm以外にコレを作るに向いているものは有るでしょうか?
0164名前は開発中のものです。2009/04/06(月) 16:45:20ID:RYr8iyoR
immってIMEのつもりで言ってるの?それとも別物?
0165名前は開発中のものです。2009/04/06(月) 16:47:30ID:tt9nRsvJ
>>164
0166名前は開発中のものです。2009/04/06(月) 16:48:16ID:24lgJhmp
Input Method Manager
01671632009/04/06(月) 18:59:29ID:XR91wAX5
>>164
>immってIMEのつもりで言ってるの?それとも別物?
いえ、別物ではなくその IME です。
(IME(Input Method Editor)の管理をしているimm(Input Method Manager))

immはプログラムを稼動させながら、日本語を変数に取り込むのに向いているでしょうか?
別のもっと良い関数などが存在したりするでしょうか?
0168名前は開発中のものです。2009/04/06(月) 19:26:28ID:iuX0ppRq
どっちかと言うとWinAPIの方の話だな。
てかプログラムに関係なくIME立ち上げられるから、
そのウィンドーメッセージ受け取ったら、位置をそれっぽく指定して、
ゲームでIME受付しているように偽装する。
で、入力確定するとウィンドーメッセージに文字列が入ってくる。
まあ、あくまで自分の実装の場合…だけど。

でもDirectXとの相性はシラネ。
俺はなんか嫌な予感したんで、IME用とDirtecct3Dでウィンドー分けたw
01691632009/04/06(月) 20:27:45ID:XR91wAX5
>>168
そういうやり方が有る=つまりimmでできるのですね。
感謝!
0170名前は開発中のものです。2009/04/06(月) 23:48:50ID:cxQ8vTIU
>>169
普通にIME関係のメッセージ処理すればいいと思うよ
変換中とかちょっと操作しないといけないだろうから
168のいうとおりそれ用のAPI使ったりして
0171名前は開発中のものです。2009/04/07(火) 13:42:48ID:RfvbSdKN
>>169
DXライブラリのソースコード見ればimm関連の処理の流れ分かるよ
0172名前は開発中のものです。2009/04/07(火) 20:46:51ID:2mw+TwCA
ゲームパッドがゲーム中に反応しなくなりました
調べてみたらDirectXを最新にするようにとあったので最新にしたら
動くには動いたのですが、方向キーだけがききません。

3Dスティックは正常に動き、他のボタンも動きます。
コンパネのゲームパッドの反応を見ると方向キーも反応できています。

動かしているゲームがツクール2000とxpで試しましたが
どちらも方向キーだけがききませんでした。
何かわかる方がいたらご教授お願いします…。
0173名前は開発中のものです。2009/04/07(火) 20:54:45ID:0yKRwHSw
まずはマイクロソフトのサイトからDirectX10 SDKを探してインストールして試してみてください

0174名前は開発中のものです。2009/04/07(火) 21:41:28ID:2mw+TwCA
>>173

返信ありがとうございます。
DirectX10 SDKをインストールしてみました。
(青紫の●に黄色の×のアイコン)
途中聞かれた内容はNo〜を選びそのままインストールを済ませました。
その後実行に随分時間がかかりましたが、無事完了したと思います。

ですが現状は変わりませんでした。
ちなみにOSはVistaです。
ELECOM製品のPS2のコントローラを変換するものを通してやってますが
ドライバもVista対応のものを入れて再起動もしています…。
01751722009/04/07(火) 23:14:35ID:2mw+TwCA
なぜか解決しました!
どうもお騒がせしました!
0176名前は開発中のものです。2009/04/07(火) 23:47:56ID:2mmIIsMt
原因はコントローラの接触不良とかじゃね
0177名前は開発中のものです。2009/04/08(水) 08:06:31ID:TTYdMFcm
>>161
ここかな?
サウンドノベル・ビジュアルノベルのシナリオ4
http://pc11.2ch.net/test/read.cgi/gamedev/1213325353/
0178名前は開発中のものです。2009/04/08(水) 15:32:13ID:seQYh4Lz
ManagedDirectX+C#で開発中ですが、
戦略シミュレーションのマップデータ(2D)の管理の仕方に困っています。
グラフィックを多用するので、できるだけ処理速度が必要です。
外部読み込みでマネージ配列に情報を格納するという処理を行いたいのですが、
最低上限1000x1000(int)の配列がいくつか必要だと考えています。
プロパティだとかインデクサとかありますが、何が適切でしょうか。
それとも静的配列で格納するべきなのでしょうか。
0179名前は開発中のものです。2009/04/08(水) 15:51:01ID:Vxe0fs9Y
「最低上限」という単語にひっかかりを感じるがw

インデクサで表現した方が良いかというのは難しい問題で、作り手が決めるものだしなぁ。
データを圧縮するためにインデクサを利用して、2次元配列的にアクセスしやすいものを作る
とか考えているのかな?とかいろいろ考えられすぎて困るw

たとえばRLEとかで圧縮したマップチップをインデクサつかって適切に取り出すとか。

で、今でてきている情報だけで判断すると、
マップ表現として1000*1000の配列が必要であったとしても、
それ以外の配列が本当に必要かどうかは検討し直したほうが良いと思う。

なんも考えないで、いくつも静的に確保して、
メモリの問題とかが出てきてから考えればいいとおもうんだ。
作ってる途中の最適化なんてばからしいからやめておけw
0180名前は開発中のものです。2009/04/08(水) 16:00:06ID:iI1UgMGD
まずはベタで作って遅けりゃ考える
でいんじゃね
0181名前は開発中のものです。2009/04/08(水) 16:38:53ID:seQYh4Lz
>>179-180
ありがとうございます。
説明不足で申し訳ないです。

> インデクサ
すみません。軽はずみに適当な例をあげてしまいました。
本筋とは脈絡のない話ですが、個別の変数名をもった(体力、攻撃…など)
パラメータなどを配列化して一元管理しようと思っていたのですが、
これもまた誤用だったのかもしれません。

> マップ表現として1000*1000の配列が必要であったとしても、
> それ以外の配列が本当に必要かどうかは検討し直したほうが良いと思う。
もしかしたら自分は勘違いしていたかもしれません。
その座標固有のフラグや、Aスターアルゴリズムなどの情報を
別途の配列に格納していたのですが、もしかして無駄なメモリを消費していたのでしょうか。

> 遅けりゃ考える
何だか作ってもソースが汚く見えてしまうんです。
もう6回くらい作り直してるんですが、
汚いソースを手直ししたくないという欲望がありまして…orz
0182名前は開発中のものです。2009/04/08(水) 17:07:23ID:iI1UgMGD
まだよく見えないので適当にエスパーして言うけど
グリッドのクラスを配列化するだけじゃだめなのか?
0183名前は開発中のものです。2009/04/08(水) 17:24:23ID:Vxe0fs9Y
>>181

>個別の変数名をもった(体力、攻撃…など)
>パラメータなどを配列化して一元管理しようと思っていたのですが、
>これもまた誤用だったのかもしれません。
これは普通にクラス化してプロパティとしてアクセスするのが良いのじゃないかな。

インデクサだと嬉しいところってのがあんまり思い浮かばない。
これは設計している上じゃないと思いつかないもんだからなぁw

>その座標固有のフラグや、Aスターアルゴリズムなどの情報を
>別途の配列に格納していたのですが、もしかして無駄なメモリを消費していたのでしょうか。
マップの地形情報とかは確実に前座標に必要な物だけど、
たとえばその上に乗っかる建物情報(大戦略でいえば都市や空港)は
別のListとか配列とかにすれば良いのじゃないかなぁ。
HashMapとかのほうが今回の目的には合っているかもしれない。

Aスターアルゴリズムの情報をどう持っているかわからんけど、
計算後の最短経路をリストで持つだけなんじゃないの?
計算途中でも配列が必要な場面は無いと思うんだな。

>何だか作ってもソースが汚く見えてしまうんです。
>もう6回くらい作り直してるんですが、
>汚いソースを手直ししたくないという欲望がありまして…orz
完成>>ソースの綺麗さ ってのだけは重要。
どんだけ綺麗に書いても完成しなければクソだ。

アルゴリズムの勉強もすでにやっていると思うから
つぎはデータ構造についての勉強をすると良いと思う。
この二つは切っても切れない関係だからね。
そうすれば、自分の思うデータを、どのデータ構造で表現すれば効率が良いかがわかってくると思う。
0184名前は開発中のものです。2009/04/08(水) 17:27:39ID:l7yernqc
>>181
だいたい1000*1000のマップは上段抜きにやる気がしない。
最初は20*20ぐらいの小さいので作ればいい。
そうすれば、探査アルゴリズムの作るのが楽になる(デバックしやすい)
全体い機能が動く小さなプロトタイプが出来てから大きくすればいい。
>(体力、攻撃…など)
これは普通キャラガもつべきデーターでマップには必要ない。
キャラデーターにマップ上のXY,座標をを持てばいい。
>Aスターアルゴリズム
で探査尾する場合のマップデータは一時的に一枚持てばすむ。
>座標固有のフラグ
これらは、へっくすの種類データの中に埋め込むのがいい。
へっくすの種類で沼地なら移動が遅い、とする。
別途ほしければ、使っていない上位ビットを使う。
01851812009/04/08(水) 17:28:16ID:seQYh4Lz
>>182
あ、なるほど!
その発想はありませんでした。
そっちの方がいいと思います。
分かりにくい説明でした。
01861812009/04/08(水) 17:51:25ID:seQYh4Lz
>>183
ありがとうございます。

> インデクサだと嬉しいところってのがあんまり思い浮かばない。
確かに配列化しても、結局クラス内の配列を指定しているだけなのだと
思う節はありましたが、意外です。

> たとえばその上に乗っかる建物情報(大戦略でいえば都市や空港)は
> 別のListとか配列とかにすれば良いのじゃないかなぁ。
> HashMapとかのほうが今回の目的には合っているかもしれない。…
建物などはそう考えていました。
HashMap…ググってみます。

> Aスター
対象との距離(コスト)を各座標に格納していますが、
より距離の短い経路があればそちらを選ぶ必要があると思ったので、
必要ではないでしょうか。

> 完成>>ソースの綺麗さ
なるほど。潔癖は良くないですね。
> アルゴリズムの勉強もすでにやっていると思うから
> つぎはデータ構造についての勉強をすると良いと思う。
ありがとうございます。アルゴリズムも触り程度しか勉強してませんが、精進します。
01871812009/04/08(水) 18:00:49ID:seQYh4Lz
>>184
> 最初は20*20ぐらいの小さいので作ればいい。
> そうすれば、探査アルゴリズムの作るのが楽になる(デバックしやすい)
勿論そうです。
> これは普通キャラガもつべきデーターでマップには必要ない。
> キャラデーターにマップ上のXY,座標をを持てばいい。
すみません。インデクサの用例のため関係ない話題を取り上げてしまいました。
キャラのデータは個別にクラス化しています。
> へっくすの種類
ググってみます。

時間を割いて下さって、ありがとうございます。
あとは何とかググって解決します。
0188名前は開発中のものです。2009/04/08(水) 18:17:35ID:Vxe0fs9Y
>対象との距離(コスト)を各座標に格納していますが、
>より距離の短い経路があればそちらを選ぶ必要があると思ったので、
>必要ではないでしょうか。

マップチップとコストって等価じゃないの?
たとえば、ある地点が山地であったとしても、
キャラクタが飛行タイプであればコスト1、
人間タイプだと4とか、そんな感じだよね。

こんな感じでキャラクタの属性として、移動タイプとか持たせれば
マップチップを保持する配列一つだけで、コストマップが作成できると思うんだけど?
01891812009/04/08(水) 18:40:48ID:seQYh4Lz
>>188
間違っているかもしれませんが、
×に辿り着くため○、◎の経路があったとして
(□が原点、■が障害物)
原点からの経路によって移動コストが異なる場合、
その先(×以降)を検索する上で誤差が生じると思います。
□◎◎
○■◎
○○×…
私の関数では1マスずつ検索して、同一マスに辿り着けば
コストの低い方を次のオープンリストに追加するというものなので、
経路によって誤差が生じるのではないかと思ったのですが。
0190名前は開発中のものです。2009/04/08(水) 19:08:13ID:Vxe0fs9Y
別に間違ってないと思うよ。

ただ、最初に決めるモンじゃなくて、移動行動ごとに最探索するものでしょ?
ノード間(ここではヘクス間)の重みはマップチップと等価でしょ?

で、探索はA*でやるから、全てのノードをチェックする可能性が少ないわけだよね?
となると、1000*1000の配列は必要ないでしょ?ってこと。
01911812009/04/08(水) 19:23:08ID:seQYh4Lz
>>190
確かにそうですね。移動量の矩形の領域だけかもしれません。
それに、ローカルで事足りると思いました。把握しました。
0192名前は開発中のものです。2009/04/10(金) 04:56:06ID:q4HGwHB4
3ヶ月くらい前にどっかの博士課程かなんかの人が3dゲーム開発エンジンみたいなのを
たしか経済産業省かなんかのサポート付きで開発した、みたいな記事読んだんだけど
(かなりあいまい、詳細違うかも)
分かる人いませんか?
0193名前は開発中のものです。2009/04/10(金) 16:39:12ID:p+jWJ3R2
>>192
未踏ソフトウェア創造事業

とかでググったらなんかヒットすんじゃないの?
これか?
ttp://jp.3d-tcpdump.org/
0194名前は開発中のものです。2009/04/10(金) 16:43:07ID:p+jWJ3R2
>>192
あとこんなのもあったが、ちと古いか・・・
ttp://lamp.sourceforge.jp/
0195名前は開発中のものです。2009/04/10(金) 20:58:47ID:IWmoplMV
ハローワールドが終わったら次は何を練習していくのが普通なんだ?
0196名前は開発中のものです。2009/04/10(金) 21:15:25ID:qGPoIXmj
ウィンドウが作れるようになる。
→窓に絵をかけるようになる。
→音を鳴らせるようになる。
0197名前は開発中のものです。2009/04/10(金) 21:21:30ID:BzNecVUy
全ての言語でハローワールドを出すまでは終わらせてはいけない
0198名前は開発中のものです。2009/04/10(金) 21:23:17ID:cdOEBCsg
ウィンドウズならコントロールの配置とウィンドウプロシージャを使いこなすんだな。
MFCはそれを覚えてからの方がより役に立つ。…ゲームでMFCは使わないかな?
俺は使うけど。
0199名前は開発中のものです。2009/04/10(金) 21:27:20ID:Y7HGhfIy
もうテキトウなDiectX本でも買ってきて、サンプル手コピーして弄々しちゃったら?
0200名前は開発中のものです。2009/04/10(金) 21:34:18ID:iRprjuDB
>>195
ハローワールドが出せたという事は、
お前は、既にその言語を完全にマスターした達人だから、
さっさと次の言語にとりかかるべき
0201名前は開発中のものです。2009/04/10(金) 21:37:30ID:o/eQJnMQ
ハローワールドの次は、おはようございます、こんばんわだ。
そして、アイワ世界を救う を100万遍したら、南国の孤島に行きなさい!
0202初心者2009/04/10(金) 21:49:43ID:AuUTXtVm
携帯からですがすいません。
携帯でアクションゲームを制作したいのですが、おすすめのツールやアプリなどはありますか?
因みに機種はFOMA800Iです。
0203名前は開発中のものです。2009/04/10(金) 21:57:48ID:q4HGwHB4
>>194
これだったと思う。
ありがとう
0204名前は開発中のものです。2009/04/10(金) 22:51:19ID:cdOEBCsg
初心者がいろんな言語に手を出しても器用貧乏になればまだマシな方。
役立たずになるのがオチだ。
0205名前は開発中のものです。2009/04/10(金) 23:09:08ID:wsd3mkuO
選べる事は良いことだ
あれこれ使って見て、使った中で、
自身の性格に似合うものを選べばよい。
0206名前は開発中のものです。2009/04/11(土) 00:05:44ID:+IU6HpLu
>>202
とりあえず公式へ
http://www.nttdocomo.co.jp/service/imode/make/content/iappli/

iアプリは505世代までしかやってなかったから、今どうなってるのかは知らん
0207初心者2009/04/11(土) 10:03:17ID:2uP0z5Zy
ダウロ出来ませんでした…。
まだまだ初心者なのでもうちょっと粘ろうと思いたいです。
0208名前は開発中のものです。2009/04/11(土) 12:06:46ID:9kwp9HM9
最近の馬鹿ってダウロと略すんだ…。
異文化を学んだ。
0209名前は開発中のものです。2009/04/11(土) 13:55:36ID:2FSavDqm
3Dのアクションゲームを作ろうと思っているのですが、3Dのマップデータはどのようにして管理するものなのでしょうか?
作ろうとしているゲームは、マリオ64やゼルダの伝説のような感じのものです。
マップの大きさに応じた3次元配列によってマップを表現する、という方法なら思いついたのですが、なんだか泥臭いやり方のような気がして…。
なにかスマートな方法はあるのでしょうか?よろしくお願いします。
0210名前は開発中のものです。2009/04/11(土) 14:52:38ID:KnPcD7P5
別にセルでうめるわけじゃないんだから
どこに何を置くかのデータだけ(できれば外部ファイルで)持てばいいじゃない
0211名前は開発中のものです。2009/04/11(土) 15:57:06ID:Z4tpim7M
マップについて一般論として
屋外と室内に分けます。古いものは室内を屋外として使っていた
@ポリゴンで作る。小規模
A高さマップで作る。屋外向け
BBSPマップで作る。室内向け
C独自形式で作る。

このように分類されて、使う用途によって選択される。
また、LODなどによって最適化を行うことで広いマップもできる。
例えば、メタセコイアを使ってポリゴンで作る、高さマップを作る。
BSPはQuakeなどのMODを作る手順で行い、ツールも容易に入手できる

古いPCだと多重の最適化しなければならなかったが、今時のPCだと
無理せずとも、ポリゴンだけでも簡単に作り出せる。
当然ながら、目的によって選び方違ってくるから何をしたいかが重要です。
0212名前は開発中のものです。2009/04/11(土) 19:04:09ID:+g7L3WW6
>>211
その説明だと誤解を生じそうだな
まるで2から4がポリゴンでないように読み取れる

2以外は3Dなら結果として保持するデータは
3次元配列で同じだし。

1は1個の空間を別々に作って、プログラム上でそれの切り替えでする
3は空間はゲームとは別のツールで予め自動で区切られる、
それをまたプログラムで切り替える

2はグリッド状の地形で高さのみ保持しとく表示部分の絞込みは
octreeとかでする

4はいみがわからんw

0213名前は開発中のものです。2009/04/11(土) 20:11:28ID:Z4tpim7M
3次元配列の意味がわからんのだよね
マップの付属装飾品の意味だったなら、ボーンで配置するのだけれど
0214名前は開発中のものです。2009/04/11(土) 21:57:29ID:MW0X47d7
マップで思い出したのだが、初代スーパーマリオに出てくる「穴」って、穴自体がオブジェクトとして配置されてるらしいね。
逆に考えてしまいそうなものだけれども。
0215名前は開発中のものです。2009/04/11(土) 22:21:26ID:oi/Z2oTr
あのゲームの地面って大地とマグマと穴しかないじゃん
02162092009/04/11(土) 23:54:01ID:2FSavDqm
マップデータというのは地形データのことです。
質問の書き方があいまいでした。申し訳ありません。

>>210
アイテム等のオブジェクトはその方針で実装していくつもりです。
地形データはどうやるのが一般的だろう…と思ったので質問させていただきました。

>>211
>>212
ありがとうございます。
とりあえず屋内を作っていこうと思っているので、>>211の@,Bでやっていこうかと思います。

>>213
説明不足で申し訳ありません。
マップの付属品はまた別で、地形データのことです。
0217名前は開発中のものです。2009/04/11(土) 23:59:46ID:+g7L3WW6
>>211
BSPはQuakeなどのMODを作る手順で行い、ツールも容易に入手できる

ライブラリを使わないでBSP形式を表示するサンプルコード
ってどこかにある?
0218名前は開発中のものです。2009/04/12(日) 16:09:57ID:PVgcryw9
CGIゲームってどこで勉強すればいいですかーー?
需要ないかもなぁ
0219名前は開発中のものです。2009/04/12(日) 18:35:21ID:1xOLFXsM
BSPに関して、
Quakeのソースコードを読めと言われるでしょう
これは内容が難解であるから、素人向け解説は無いと思う。
より簡単な方法が他にもたくさんあるのだから別の方法を調べるのがよいと思われる。
0220名前は開発中のものです。2009/04/12(日) 19:54:18ID:vw2uNoL2
原理は難しくないよね、BSP
0221名前は開発中のものです。2009/04/13(月) 08:19:32ID:dVdDJEiy
なんの役にも立たない上級者気取り
0222名前は開発中のものです。2009/04/13(月) 13:42:37ID:M0gnt9K0
>>221
まったくもって正しい指摘だが、ここ2ちゃんだしな
0223名前は開発中のものです。2009/04/13(月) 16:48:48ID:Pt/GtVYW
DirectXの「3Dのモーション再生」に関してなのですが、

複数のパーツ(オブジェクト)を組み替えて
1スキンメッシュを作り動かしたいのですが、(いわゆる3Dの着せ替え機能)

無理やり頂点・面・マテリアル情報等を押し込んでも、
管理がシビアになりそうですし、
普通はどう頂点・面情報を管理しているものなのでしょうか?

現状、手に物を持たせてモーション再生する程度までは出来て、
モデルとモーションは別ファイル、
使用中のXファイルのデータ形式はほぼ把握している。と言った状況です。
よろしくお願いします orz
0224名前は開発中のものです。2009/04/13(月) 18:03:47ID:IXZy+dwd
結局なにを聞きたいのかよくわからんが
単純な方法だと
まず本体となるXファイルを読み込む
これは基本となるボーン構造をもっていて
パーツ=メッシュコンテナになるように複数のMeshをもったXファイルにしておく

そしてパーツ用のXファイルを別に読み込み
本体の入れ替えたいパーツのメッシュコンテナのアドレスを
新たに読み込んだパーツのメッシュコンテナのアドレスを入れ替える
あとは本体のボーンとメッシュコンテナの関連付けを再度行えば良い
02252232009/04/13(月) 20:02:40ID:Pt/GtVYW
>>224
メッシュコンテナ・・そういう技法が有るんですね。
ググると色々出てきました。
メッシュコンテナに対してモーションを適用させるコード・・
頑張って探しまわってみます。

ご助言感謝・・っ
0226名前は開発中のものです。2009/04/13(月) 20:44:34ID:IXZy+dwd
>メッシュコンテナに対してモーションを適用させるコード・・
>頑張って探しまわってみます。

そこはSDK付属のスキンメッシュのサンプルの
どこで何をやってるのかをきちんと理解していれば
コード内に含まれてる作業なんだが
0227名前は開発中のものです。2009/04/14(火) 00:44:11ID:6wAdjvVs
>>225
基本的には、FrameとMeshContainerという抽象クラス、
およびアニメーションつきXファイルを読み込むためのなんとかHierarchy抽象クラス(名前忘れた)を使えばいい。
詳細は自分で実装する必要があるけど、大抵は決まりきったコードを決め打ちして終了。

それぞれ、
Frameが3Dモデルのボーンに対応。つまり位置や向きオフセット値。FrameはMeshContainerを保持できる。
MeshContainerは3DモデルのObjectに対応。Mesh、マテリアル、テクスチャなどをメンバに持つ文字通りのコンテナクラス。
Hierarchyは、3Dモデルを読み込む際に必要な、FrameとMeshContainerのファクトリメソッドを自前で定義するためのもの。
読み込まれるデータのデータ型はMeshではなく、AnimationRootFrame。こいつはルートのFrameとAnimationControllerを保持する。
なお、あらかじめ3Dモデルに仕込んでおいたアニメーションは、AnimationControllerで一括操作できる。

今回の着せ替えだが、例えば剣を持たせたいとした場合、あらかじめ剣に対応する位置のボーンだけ作っておく。
DirectX上では、ワールド行列〜剣ボーンFrameのオフセット行列までを、左からかけていった行列を取得して使用すれば
そこにグラフィックを配置できる。

例えば、
剣ボーン*手ボーン*下腕ボーン*上腕ボーン*肩ボーン*背骨ボーン*ルートボーン*ワールド行列といった感じ。
もちろんFrameが保持するMeshContainerもこの手順で計算した行列を使用する=毎回計算する必要があるので、
普通Frameに計算した行列を保持できるようにしておく。
0228名前は開発中のものです。2009/04/14(火) 00:59:08ID:AHQvIfqg
まゆ毛ボーン
02292232009/04/14(火) 14:04:04ID:8xQZFmxj
>>226
>SDK付属のスキンメッシュのサンプル
なるほど・・。書籍やWebサンプルから調べて継ぎ接ぎしてました;
SDKのサンプルのコードが
上手く動かない物が幾つか有ったせいで毛嫌いしてましたが;
部分で部分調べて参考にしてみようかと思います。

>>227
ID3DXAllocateHierarchy なのかな。

ご説明ありがとうございます。
大まかにですが、流れは理解できた気がします。
どうも今の描画機能とは全く別物を作らないと・・って事は理解できました。
でも一度実装さえできれば、素材制作とかが相当に楽になりそうですね。

でもその前に、抽象クラス・およびクラスについて
しっかり再勉強しないと実装できなさそうなので、実装はいつになるやら。 orz

>>228
≡ ≡
; ω ;

為になりました。ご助言感謝っ
0230名前は開発中のものです。2009/04/18(土) 11:49:00ID:s+M9Sh+Q
ゲームのキャラのドットデータとかって、どこかに一覧で公開されてたりしてませんか?
0231名前は開発中のものです。2009/04/18(土) 12:54:40ID:i45TuxvD
>>230
一覧で公開はされてない。
「ゲームのキャラのドット」が市販ゲームの二次創作なら板違いだし、2ちゃんねるで聞いたところで、
サイト晒しになるので答えは返って来ない。
自作ゲームに使える素材、という意味なら、「ツクール 素材」でググれ。
0232名前は開発中のものです。2009/04/18(土) 17:26:25ID:s+M9Sh+Q
>>231
なるほど。ありがとう。
0233名前は開発中のものです。2009/04/18(土) 23:08:35ID:lIDQOA3e
xp+directX 9.0cでゲームっぽいものを作っています。
ロジックが重くて困っています。

というのも、コンソール環境で制作したロジックを
ゲーム開発環境本体に持っていくと
処理時間が10倍以上にふくれ上がってしまうのです。
(QueryPerformanceCounterで測定)
たとえばコンソールで殆どノータイムのファイルオープン処理が
本番環境だと10ミリ秒かかったりします。

何か考えられる原因などが分かりましたら、教えていただけると助かります。
0234名前は開発中のものです。2009/04/19(日) 00:04:41ID:W/HVQAYB
まずは両環境のスペックと常時動いているソフトウエアを出せ。
02352332009/04/19(日) 02:36:23ID:OZMPsI83
>>234

両環境とも同じパソコンで動かしています。

*スペック
CPU:Intel CoreDuo2 E8500 3.16Ghz
メモリ:3.00 GB RAM
グラフィックカード:GeForce 9500 GT
directX 9.0c

*常駐ソフトフェア
avast(ウィルス対策ソフト)
窓使いの憂鬱

他にも伝えるべき情報がありましたら、教えてください
02362332009/04/19(日) 02:39:24ID:OZMPsI83
書き忘れました。
ドライブ:IntelSSD X25-E Extreme SATA SSD(X25-E)

SSDはあまり関係ないと思っているが…。
0237名前は開発中のものです。2009/04/19(日) 14:23:06ID:YxCYQRMq
思うだけじゃなくてちょっとでも考えに浮かんだのなら別環境で試せ。
で、デバッグ環境だからじゃないの?
思い切りログ出力したりプロファイルとったりしてない?
0238名前は開発中のものです。2009/04/19(日) 23:49:33ID:Fl3oW2m3
C言語の質問だけどいいかな?
まぁ簡単な質問なので。

externって値が保存されるってことはメモリ食うから出来ればあまりつかわない方がいい?
それともジャンジャン使うべき?
0239名前は開発中のものです。2009/04/20(月) 00:12:39ID:kQufoCL7
>>238
コンパイラを実行するマシンのメモリを食うって意味か?

実行環境の話なら、同一の実体を複数のソースファイルから参照するってだけだから
使用するメモリが増えることはないと思うんだ。
0240名前は開発中のものです。2009/04/20(月) 23:54:03ID:QNsHeDPi
>238
ゲーム中ずっと常駐する必要があるんだったらグローバルでもいいんじゃね
ただしサイズが大きい(画像データ格納用とか)とか、常に必要なわけじゃなければポインタ変数のグローバル変数にして領域自体は動的確保したほうがいい

メモリうんぬんよりグローバル変数使うときはスパゲッティにならないように気をつけて
staticにできるならstaticのほうがいい

02412252009/04/21(火) 00:02:31ID:GZPZ4pc8
C++・DirectXのメッシュコンテナで「3Dの着せ替え」をしようとしている者です。

あれから >ttp://www.shader.jp/xoops/html/masafumi/directx9/3dtips/d3d16.htm
のサンプルを元に、他Webサイトの解説やMSDNを見て周り、
 ・フレームの入れ子に、メッシュ情報もバラバラに保管される
 ・モーションはアニメーションコントローラーで別管理
と、その他大まかなデータの構造、全体の処理の流れは理解したつもりなのですが、

複数のモーション、複数のモデルを管理する場合、
STL(vectorの予定)で管理するのは当たり前でしょうか?

また、武器など手に持つモデル単品をメッシュコンテナに読み込んで良いものか
悩んでいるのですが、もしこういう方面の解説が載っているサイトを
ご存知でしたら、教えて頂けると幸いです。
微妙な質問ですが、よろしくお願いします orz
0242名前は開発中のものです。2009/04/21(火) 08:39:58ID:h92/2fAR
実装なんて好きにすりゃいいじゃん、って思うのは俺だけ?
0243名前は開発中のものです。2009/04/21(火) 12:35:18ID:h92/2fAR
ADVの見本として、アリスソフトのしまいま、ソフトハウスキャラのウィザーズクライマー体験版をプレイしてみたんだけれど、
ほかに抑えておけっていうメーカーさんってどんなところがありますか?
0244名前は開発中のものです。2009/04/21(火) 13:10:22ID:Q9Hh4CWZ
エロゲ板で聞けば?
0245名前は開発中のものです。2009/04/21(火) 13:15:53ID:ECa4+T1M
逆転裁判体験版
ってまだあったっけ
0246名前は開発中のものです。2009/04/21(火) 15:10:55ID:ySLZfUK5
>241
一般的なやりかたとかはないから、みんな自分なりに模索しながらやってる
vector使うなら内部でどうメモリが確保されてるか把握してたほうがいい
使用している要素以上のメモリが確保されてたり、要素を追加したときにコンテナが確保しているメモリサイズをこえた場合、メモリの再確保が行われてメモリコピーが発生することがあるのは把握してたほうがいい

趣味のゲーム制作は常に学習題材として、いろんなことを試すのもひとつの楽しみ方だったりする

0247名前は開発中のものです。2009/04/21(火) 15:11:36ID:ySLZfUK5
>241
一般的なやりかたとかはないから、みんな自分なりに模索しながらやってる
vector使うなら内部でどうメモリが確保されてるか把握してたほうがいい
使用している要素以上のメモリが確保されてたり、要素を追加したときにコンテナが確保しているメモリサイズをこえた場合、メモリの再確保が行われてメモリコピーが発生することがあるのは把握してたほうがいい

趣味のゲーム制作は常に学習題材として、いろんなことを試すのもひとつの楽しみ方だったりする

02482412009/04/21(火) 15:27:24ID:dynOcA6s
>>246
ありがとうございます。
vectorにはそういうクセが有るのですね。
注意するようにしてみます。
といってもメモリの状態の確認方法がまだいまいち解らないので、
デバッガ等、そういう確認機能も学習しないとですね。

ご助言感謝っ
0249名前は開発中のものです。2009/04/21(火) 19:52:10ID:bDHju077
メモリの状態の確認って、どうやってやるのでしょうか?
・ポインタの配置位置とメモリーサイズから計算する
・タスクマネージャで確認する

他に方法があるならお願いします。
0250名前は開発中のものです。2009/04/21(火) 20:07:01ID:bDHju077
追加でつ
・ソースから類推する
・メモリー使用時、取得時、解放時の速度を計測する
0251名前は開発中のものです。2009/04/21(火) 20:44:53ID:ySLZfUK5
newをオーバーロード(ライド?)して自前new関数の中に計測コードを書いて確認
■ このスレッドは過去ログ倉庫に格納されています