1 名前:名前は開発中のものです。 mailto:sage [2011/02/01(火) 16:58:30 ID:Fc0ojZal] このスレはゲームエンジンの製作・雑談・情報交換を行う為のスレです。 ゲームエンジンに関係ない話は該当スレか雑談スレでどうぞ。 総合発表&雑談スレッド その3 hibari.2ch.net/test/read.cgi/gamedev/1216633635/ ※前スレ hibari.2ch.net/test/read.cgi/gamedev/1293381827/
860 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/04(水) 16:27:05.51 ID:ZninQWD9] ある意味もっとお世話になるMesh周りはこうしようと思う Mesh VertexBuffer IndexBuffer(s) Appearance(s) ShaderProgram UniformArray(s) Texture(s) Material PolygonMode,BlendMode,PointSpriteMode (s)が付いているのは複数。IndexBufferとAppearanceが複数なのはサブメッシュ。 見え方は「Appearance」が担当する。 Appearanceは1つのShaderProgramとそこで使用するUniform変数のセット。あとTextureとMaterial。 Materialはユーザーがシェーダーに渡すパラメーターをセットしたObjectを置いておくためのプレースホルダー。Materialクラスは完全に空でユーザーが継承して使用する。 >>857 の理由によりUniform変数には直接値をセットしない事に注意。 かならず値を取ってくる元になるObjectのプロパティがなければならない。 あとのPolygonMode, BlendMode, PointSpriteModeはシェーダーから触れないOpenGLの機能を変更するためのつまらないクラス ポイントスプライトとは独立したノードではなくMeshクラスを使用する。
861 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/05(木) 14:00:11.24 ID:flNlSeDp] VertexBufferとIndexBuffer バーテックス・バッファーはAttribute変数として送られる頂点ごとのデータのバッファー(x,y,z, 法線, テクスチャー座標など) インデックス・バッファーはglDrawElement()で使うインデックス。 この辺のデータ構造はライブラリによって異なるが、どの方式が有利とかは多分無い DDDではMeshの下にVertexBufferx1とIndexBufferxnを持つ 生の頂点データはVertexArray<T>クラスが保存する これはそのままglBufferData()でGPUに送り込める形そのもの 操作は非ジェネリックな同名のVertexArrayを通して行う IndexBufferは本当にintの配列をどかんと持っているだけ やはりそのままglBufferData()でGPUに転送する
862 名前:名前は開発中のものです。 mailto:sage [2012/07/05(木) 14:05:32.16 ID:flNlSeDp] 描画できるプリミティブについて トライアングル、ライン、ポイントスプライトの「リスト」形式のみ「ストリップ」には対応しない これは現在のGPUではリスト形式を使ったほうが高速で、あえてストリップ形式を使う理由がないため シンプルである事を価値とするので複数の手段は提供したくない インデックスを指定する時にリスト形式だと冗長なのでストリップ形式でも指定できるようにしようかとも考えたが 上記の理由でバッサリ削除 この辺は異論も出そうだが実際に作っている人の裁量の範囲ないということで
863 名前:名前は開発中のものです。 mailto:sage [2012/07/05(木) 14:08:25.82 ID:cRpEW0yx] あれ インデックスは32bit限定? ushort版はなし??
864 名前:名前は開発中のものです。 mailto:sage [2012/07/05(木) 16:20:07.98 ID:2Z2qwIZw] これってこの部分を実装しましたという報告なのか、これからやりますなのか
865 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/05(木) 16:37:17.91 ID:flNlSeDp] >>862 intあればいいと思ったけど対称性悪いからIndexBuffer<T>にしといた 今の所ジェネリックなのはVertexArray<T>とIndexBuffer<T>とKeyframeSequence<T> 全部同名の非ジェネリック版ばあって操作はそちらから行う
866 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/05(木) 16:40:06.48 ID:flNlSeDp] >>864 今の所ガワ(API)だけ実装してある。中身はすっからかん 必要なフィールドとかは置いてあるので実装はそんなに苦労しないはず それでも月単位で必要だけど
867 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/05(木) 16:49:34.85 ID:flNlSeDp] テクスチャーまわり Image2DとTexture2D, TextureCube。あと基底クラスのTexture. 画像のロードは.NetのSystem.Drawingにやってもらう。 データの入力形式としては.NetのBitmapかbyte[]. フォーマットはLuminance, Alpha, LuminanceAlpha, RGB, RGB. パック形式のRGB565, RGB5551はとりあえず対応しない。S3とかも対応しない リピートはClampとRepeat. テクスチャー関数というかDecal, Modulteなどはシェーダー内部の話なのでここでは出てこない あとテクスチャークラスに直接画像をロードするライブラリもあるけど今回は1クッション(Image2D)を置く
868 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/05(木) 17:22:59.32 ID:flNlSeDp] テクスチャーについて1つ注意点がある 通常CPU側にはTexture2Dクラスがあって、シェーダー側からアクセスする時は「テクスチャーユニット番号」を使用する 何番のユニットにロードされたかはTexuture2Dクラスの知る所ではなく、そのプロパティとしてテクスチャー番号を取得できない (1つのTexuture2Dが別のユニットにセットされる事はあり得る) 従ってこれはAppearanceクラスの仕事(プロパティ)になる。 が、これは明らかにおかしくて本来はTexuture2Dクラスをシェーダー側のテクスチャー変数何とかにバインドするのが自然である (ただしそれは上記の理由により不可能) ではどうするか? Texture2Dは同じ番号のユニットにロードされなければならないという制限を科す。 この制限のもとでTexture2D.TexturUnitでユニット番号が取れるようにすれば、 シェーダー側にユニット番号を自然な形でエクスポートする事ができる
869 名前:名前は開発中のものです。 mailto:sage [2012/07/05(木) 19:13:16.47 ID:gC4tIXCC] svnかgitを使って公開して欲しいなぁ
870 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/06(金) 14:05:57.42 ID:FBQYllXg] >>869 してる。けどまだ見る価値はない
871 名前:名前は開発中のものです。 mailto:sage [2012/07/06(金) 14:11:27.57 ID:FBQYllXg] BoundingVolume(BV) BVは球かボックスで、カリング、ピッキング、LODで使われる。 コリジョン検出は別の専用のCollisionVolumeを用意する たぶん珍しい形だと思うけどBVは独立したクラスにせずNodeの単なるパラメーターとする BVはユーザー定義のBVと、シーンをフリーズ(後述)した際に自動で作られるBV階層のBVに分かれる
872 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/06(金) 14:17:53.88 ID:FBQYllXg] BVを使ったピッキングその1 var nodes = from n in world let ri = n.Intersect (ray) where ri.Hit orderby ri.Distance select new {Node=n, Intersection=ri}; var nearest = nodes.FirstOrDefault(); 説明の必要がないぐらいソースを見れば何をやっているか明確、しかも汎用的でピッキング以外もOK (自分で作る理由の1つがこれ) 欠点は全ノードに対して交差判定をとるので遅い事 LINQ構文はデータベースをモデルにしているので全件検索になってしまう
873 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/06(金) 14:28:22.79 ID:FBQYllXg] BVを使ったピッキングその2 float minDistance = Float.Max; Node nearest = null; world.Take ( n => { var ri = n.Intersect2 (ray); if (ri.Hit) { if (ri.Distance < minDistance) { nearest = n; minDistance = ri.Distance; } return true; } return false; }) 前回のLINQ構文を使ったピッキングと異なりBV階層を利用してルートから交差判定を行いヒットしなければアーリーリタイア(return false)を行う TakeはFunction<Node, bool>を引数にとり戻り値がtrueの限り再帰的に呼び出しを行うメソッド BV階層を利用するのでシーンをフリーズしないと使えないけど速い
874 名前:名前は開発中のものです。 mailto:sage [2012/07/06(金) 14:40:43.77 ID:FBQYllXg] シーンをトラバースしてある処理行うメソッドはいくつか用意する予定(詳細は決めてない) IEnumerable<Node> Search (Predicate<Node> func) => 指定の述語(Predicate)に一致するノードを列挙する void Take (Action<Node> func) => 全ノードに対してActionを実行する void Take (Func<Node, bool> func) => 全ノードに対してtrueを返す限りFuncを実行する これらのジェネリックデリゲートを使った構文はシーンのトラバース以外にも使用する予定 処理結果を受け取りたいはクロージャーが使える(ラムダ式からラムダ式を呼び出す関数のローカル変数にアクセスできる)ので ほとんど全ての処理が記述できる
875 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/09(月) 10:44:15.40 ID:HsBojE2t] シーンのフリーズとOnUpdate() 昨日までうっかり勘違いしていたがシーンのノードのOnUpdate()の呼び出しは シーンを上からトラバースするのではなくPriorityの順。 従ってOnUpdate()は再帰関数ではなく単発の普通の関数 コンポーネントの呼び出しは入れた順 順不同で呼び出されるのでモデルtoワールド行列とかキャッシュするためにもシーンのフリーズが必要 どのみちコリジョン(k-DOP)のワールド座標でパラメーターのキャッシュにも必要 フリーズしたら変更を伴う操作は一切受け付けなくなる
876 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/09(月) 13:29:08.22 ID:HsBojE2t] ライト 固定時代のライトは独立したノードだったが、シェーダー時代ではライトは単なるUniform変数の1つに過ぎない さらにDeffered Shadingにおいてはライトはメッシュと同様にGPUに頂点データを送って (計算済みのBGufferからパラメーターを拾ってきて)レンダリングするだけの存在である 従ってDDDにおいてLightは本当に単なるMeshの別名である using Light = Mesh; マテリアルは専用のLightMaterialが用意されていてシェーダーにエクスポートするColorやAttenuationはここで定義されている。
877 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/10(火) 10:10:18.98 ID:0DNkleuf] アニメーションイベントの設定 アニメーションクリップの指定の時刻を再生した時に任意のコールバック関数を呼び出すことが出来る コールバック関数はdelegate void AnimationEventHandler(Node node, object args)型で clip.AddEvent(time, name, handler, args)で登録する。追加情報としてobject型の引数を1つだけ指定できて使い方は任意 ハンドラーの第1引数はクリップではなくクリップがセットされたNode (利便性を考えてこうなっているが深い階層でセットされるとNodeまでたどるのが大変なのでこの仕様は変更する可能性がある) 1つのクリップが複数のターゲットにセットされていた場合、コールバック関数は複数回呼ばれる。 コールバック関数の呼ばれるタイミングはゲームエンジンによって異なるが、 Animate(time)の中で値を変更しイベントを発火させると1つの処理単位としては内容が大きすぎる(と思う) 「シンプルであること」が価値と考えるDDDではこれを分割してRaise(start, end)とする。 Raise()は時刻(start,end]までに起こりうるイベントを全て呼び出す関数 通常start=time-Δt, end=timeで前フレームから現在のフレームまでに起こるイベントを発火させる
878 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/10(火) 11:12:38.45 ID:0DNkleuf] SkinnedMeshの実装 スケレタルアニメーション用にボーンを仕込んだメッシュの実装 このクラスのやるべき事は実は多くない。ボーン行列の計算とGPUへの転送だけである ボーンはただのNodeで表し特別なクラスは作らない。 SetBones(Node[])したタイミングでボーン行列(=バインドポーズの逆行列)を計算し プロパティIEnumerable<Matrix4x4> BoneMatricesで取得する ボーンインデックスはこのNode[]のインデックスそのもの。 このプロパティは配列型で定義されたUniform変数に送られる インデックスとウェイトはAttribute変数として頂点単位で送られる ボーンの変形は「トランスフォームステージ」でユーザーがシェーダーの中で行い結果は一回書き戻す予定 OpenGLのTransofrm Feedback Buffer機能を使う予定だが、まだ詳細を詰め切れていない
879 名前:名前は開発中のものです。 mailto:sage [2012/07/10(火) 11:23:23.33 ID:0DNkleuf] 配列型のプロパティ BoneMatricesプロパティは意外とこれが熟考が必要で、 (1) 配列型 IEnumerable<T>のプロパティを配列型とみなす (2) アニメーション可能 アニメーショントラックは同名のトラックをクリップにAddTracks()で一括登録する アニメーション対象がIEnumerable<T>を実装したプロパティの場合は同名のトラックが連続して存在するものと期待して長さ分適応する (2) GPUにエクスポート可能 シェーダーが配列型のUniform変数を要求している時はそのまま列挙してセットすればOK。 でいけるはず。基本的には配列型のプロパティは例外。 多分ここにしか出てこないはず・・・
880 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/10(火) 14:29:56.51 ID:0DNkleuf] 1つ迷っているのがトランスフォームシェーダーをどうやって供給すればいいかという事 今考えているのはレンダリング時に強制的にシェーダーを切り替えて実行する案 トランスフォームシェーダーは全メッシュで共通なのでこれで十分だと思われる シルエットで描画したいとか一時的にシェーダー(というかアピアランス)を切り替えて描画するのは理にかなっていると思う この辺実はあまり調査して無くて他のゲームエンジンがどうやってるのかよく知らね
881 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/10(火) 15:34:37.39 ID:0DNkleuf] MorphMesh モーフィングは特に難しい処理はない。ベースのVertexBufferと同じ型のVertexBuuferをウェイトをかけて足すだけ すべてCPU処理。ApplyMorphing()でベースのVertexBufferは上書きされるがデータ自体は置いておく必要がある(nullでは駄目)
882 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/11(水) 10:01:05.26 ID:75j/QepR] CollisonVolume 物理エンジンが組み込まれているわけではないので勝手に動いてぶつかり合うわけではない 設定したコリジョン領域同士がオーバーラップしたら指定のコールバック関数(OnCollision)が呼ばれる CollisionVolume(CV)はコンポーネントの1種でNodeにアタッチするとコリジョン物体として振る舞うようになる CVはk-DOP(k=26)を使う。k=26はAABB(6)にコーナカット(8)、エッジカット(12)を足したもの(6+8+12=26) メリットは比較が速い(なにせ最大でも単なるfloatの大小比較26回だ)。デメリットは座標変換(とても重い)。 比較の座標系は常にグローバル座標を使う。必ずしも全てのケースでベストではないが気にしない シーンをフリーズしたタイミングで(グローバル座標に変換した)CV階層をボトムアップで作成しキャッシュする シーンをフリーズするのはこの為という意味が強い。 コンポーネントの方のCVはユーザー定義のローカルCVで、ノードの方のCVはの自動生成のグローバルなCV オーバーラップしていればvirtual OnCollision(Collision )が呼ばれる。引数はコリジョンの発生した位置、法線、ノード タイミングは後述のPhysics3D.Collide (world).
883 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/11(水) 10:07:51.04 ID:75j/QepR] Physics3D 2つある(.Net環境で定義されていない)プラットフォーム依存クラスの1つ。もう1つはGraphics3D コリジョンの判定はPhysics3D.Collide(world)で行う。 これがWolrd.Collide()でないのは「シーンはポータブル」という思想を反映している シーンにプラットフォーム依存の関数が入り込んではいけない 一応Physics3Dは物理エンジンを使用する為の接続口として考えているが、 この辺はまったく調べてないので実はわからん。 当面コリジョン衝突の判定だけ
884 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/11(水) 10:13:48.96 ID:75j/QepR] BoundingVolume あとバウンディンブボリューム(BV)も同様にして実装される やはりコンポーネントの一種。BoxとSphere(and/or)が設定できる BVはカリング、交差判定(ピッキング)、LODで使用される コリジョンボリューム(CV)とは何の関係もない このあたりのボリュームは可視化できるようにして欲しいなあ という要望は当然あると思うが現状で特に考えてない。
885 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/11(水) 12:59:47.92 ID:75j/QepR] LODSelector(コンポーネント) LODは複数の子ノードを持ったノードにアタッチされたLODSelectorが行う 親ノードにアタッチされたBoundingVolume(BV)がLODの基準になる大きさ AddCandidate(node, resolution)で子ノードとそれを何ピクセルぐらいで表示したいかを決める 例えばノードに(1)メッシュ(2)ビルボード(3)空ノードを100,10,0ピクセルで登録して World.Select()を呼ぶとスクリーンに投影されたBVのピクセル数に一番近い子ノードのみを有効にする(残りは無効) 詳細レベルの切り替えはフリッカーを起こさないようにヒステリシスを設定できる。 例えば上記の例だとhys=0.1を指定すると10〜10.9、100〜?が遷移領域になる ブレンドファクターを使って2つの子ノードを合成すべきかとも考えたが、 使わないだろうと判断して見送った。いきなり切り替わる
886 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/12(木) 11:26:44.66 ID:4kdlcnsW] ノードの継承をObject3D - Attachable - Nodeに再編成 今ひとつゴチャゴチャしていたので3階層に再編成した。 [1] Object3D 空間上の1点をあらわし座標変換を担当する抽象クラス。TRSMを保存 [2] Attachable 1.にコンポーネントをアタッチできるようにした物。ノード単体処理もここ [3] Node 2.に親子階層をつけシーングラフを構成できるようにしたもの。再帰的な処理はここ これですっきり。
887 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/13(金) 13:21:25.35 ID:XkwS8Q4i] Graphics3D デバイスクラス。.Net環境の外の部分 Targetプロパティ:xN RenderToTextureのターゲット最大4枚 〜Enabledプロパティ:機能の有効無効の制御 Selectionプロパティ:delegateでWorldからノードを取り出すLINQ構文の受け取りを想定 RenderPassイベント:delegateでレンダリングパスを記述する Render()関数:RenderPassで指定したパスを実行する 最大の特徴は「不透明物体のみ取り出してzでソートしてカメラに近い方から描画」という処理を 後でエンジンの外からラムダ式を使って記述し(Selectionプロパティ)、RenderPassイベントに追加して Render()関数でまとめて実行する事 従来型の記述よりだいぶすっきりと書けてると思う(たぶん)
888 名前:名前は開発中のものです。 mailto:sage [2012/07/13(金) 13:35:11.81 ID:XkwS8Q4i] Mesh再考 どう考えてもこのままだとSkinnedMeshが実装できそうにないので再考した (1) Mesh :静的メッシュ (2) TransformMesh :TransformFeedbackシェーダーを含むメッシュ (3) SkinnedMesh :その中でもボーンによる変形を行うトランスフォームメッシュ (4) MorphMesh :CPUで変形するモーフ スキンの変形にTranformFeedback(TFB)が必要で 将来的にSoftBodyとかパーティクルも実装可能な汎用クラスを考えてTranformMeshクラスを分離独立
889 名前:名前は開発中のものです。 mailto:sage [2012/07/13(金) 19:34:55.20 ID:XkwS8Q4i] OpenGLリソースの保管 (.Netの範囲外である)描画コードは完全にシーンから分離する そのためObjectとOpenGLリソース(int)の対応付けが必要になる 最初の案だとキャッシュとしてDictionary<Object, int>を考えていたが、 これだといったんキャッシュに入るとObjectの参照を保持し続けるのでシーン側で用済みになっても ガーべっじコレクターが永遠に走らない その都度リリースしてもらうかイベント登録とか考えたがどうもうまくない そこで考えたのがObjectへの参照はWeakReferenceにしてディクショナリーのキーを ObjectではなくObjectのハッシュコードに変える案 struct CacheLine { WeakReference ref; int resource; } Dictionary<int, CacheLine> 弱い参照は残っていてもGCには関係ないので消える。 後は定期的にGraphics3D.GC()を読んでもらえればキャッシュを捜査して 消えた弱い参照を消してOpenGLリソースを開放すれば完璧
890 名前:名前は開発中のものです。 mailto:sage [2012/07/17(火) 13:21:14.74 ID:ZJ+ZLX+A] ひと通りAPIは決めたので月末までお休み Doxygenでコメント埋めて抜けてるAPIを精査する 別段面白い作業ではないので一人でひっそりと。
891 名前: ◆qSKP3eYtY6 mailto:sage [2012/07/31(火) 14:17:03.52 ID:eTCwGkpq] 簡単に埋めてみた dl.dropbox.com/u/32901747/DDD/DokiDokiDynamo-2012731.chm APIだけ見てもわけわからんと思うが・・・チュートリアルが必要だがそのうち何とかしよう。 一応ページ差し込みができるのは確認した(けどXMLで書かないといけないから書きにくい) しかし時間かかるねえ・・・ エラー条件等も含めてがっつり書いておきたかったんだけどなかなかどうして進まない
892 名前: ◆qSKP3eYtY6 mailto:sage [2012/08/02(木) 10:02:54.60 ID:u7Ky33VI] 実装するべ。コードより先にドキュメントを完成させておきたかったけど これ以上細部を詰める必要はほとんどない(今の仕様でまず問題ないと考えている) 全部実装するのは年内一杯ぐらいかかると思うけど とりあえず今月はシーングラフ周りから。というわけでまた月末までお休み
893 名前:名前は開発中のものです。 mailto:sage [2012/08/08(水) 14:58:01.15 ID:2/6Ybee5] irrlicht1.8aに追加でこんだけ実装した、エンジンの根本はもう実装終わりそう、やっとゲーム本体を組みに行けそう win,osx互換、radeon,gf,intel互換、D3D,GL互換、SM2.0無印範囲で動作確認済み ・既存のHWSを改造して頂点色反映とか細々機能追加 ・ソフトパーティクル ・FXAAを使えるように移植 ・フォーラムに出てるXMLベースのシェーダ色々セットをD3DとGLで見た目が互換になるように改造、バグは潰し改良諸々 ・自由度低い代わりに少し軽いブルーム ・A8対応(irrlichtはなぜかA8対応する気が無い?) ・A8テクスチャフォントと文章ノード 文字個々に、4頂点色個々設定可、フチも4頂点色個々設定可、フチも込みで裏から見ても大丈夫 文字の見た目重心で回転、拡大縮小、UVで上下左右反転、タブ位置揃え、タブサイズ可変 描画がそこそこ速い頂点配列モードと自由度が高い代わりに遅い文字個々ノードモードでこれら装飾が完全互換 頂点配列モード→ノードモードへはいつでも切り替え可 書体切り替え可、字間行間設定可 文字の初期配置と以降の変更は固定機能のほかにスクリプトでも可 (固定機能の 右詰,ジャスティファイ,ルビ がまだ未実装) ・この文章ノード専用のメッセージアニメータ メッセージ表示速度やA濃度の変化距離(言い表し難い)をfloatで変更可な改行やタブサイズ対応の時間ベースアニメータ、フレーム数に依存しない ・celtストリーミング再生、oggページに分割しないで簡素に扱うためのダンパーも作った ・フルカラーもパレットも自然画もアニメ絵もPNG以上の圧縮率で、パレット画像の場合はPNGよりも展開が2倍↑速い独自コーデック、画像以外にもリソースのRAMキャッシュ用として使用、フルカラーは圧縮率を犠牲にすれば展開はもっと速くなる ・格ゲーでよくあるタイムストップ演出のためシーンマネージャ毎にタイムストップ可能にし違和感のないストップ解除も可能にした ・某エンジンで実装されてるエフェクトをパクる許可をもらったので盛り込んだ(推測で真似して実装しようとして挫折、数学苦手だ) 細々とした改造は他にも色々あるけど忘れた
894 名前:名前は開発中のものです。 mailto:sage [2012/08/08(水) 23:35:12.35 ID:TqStE+nz] がんばれー
895 名前:名前は開発中のものです。 mailto:sage [2012/08/09(木) 02:01:20.69 ID:TEaUWCM1] www.twin-tail.jp/ ↑どこ行ったん?
896 名前:名前は開発中のものです。 mailto:sage [2012/08/09(木) 04:38:13.54 ID:3/Xihug4] >>893 お疲れ様です 気長にまったり頑張ってください
897 名前:名前は開発中のものです。 mailto:sage [2012/08/09(木) 09:50:32.27 ID:6TOyobo6] >>895 あ、そこ世話になったのに消えちゃったのか。
898 名前:名前は開発中のものです。 mailto:sage [2012/08/27(月) 16:10:01.26 ID:NCPCFhPq] ◆qSKP3eYtY6のひとブログやってる? ブログ色々めぐってたら偶然それっぽいの見つけた。tu*daさん?
899 名前:名前は開発中のものです。 mailto:sage [2012/08/29(水) 17:17:49.00 ID:81OpSOeF] ログ読んでたらなぜか既にDDD6のひとの名前がでてるw それに叩かれてるけどログにある神奈川工科大のひとって Unity for MMDのひとじゃないだろうか。 単なる名無しさんよりは名前出してる人のほうが成果だすのかも。 でも名無しでも>>893 さんみたいに頑張ってるひといるし僕もがんばってみよ。
900 名前: ◆qSKP3eYtY6 mailto:sage [2012/08/31(金) 23:09:21.37 ID:xFJnGOSk] 今実装してるけど進まんねー まあのんびりいこう 来月には三角形ぐらい出したい
901 名前:名前は開発中のものです。 mailto:sage [2012/09/01(土) 10:16:37.76 ID:xmU3R1N+] >>900 つくってるのは趣味? Unity使わないの?
902 名前:名前は開発中のものです。 [2012/09/13(木) 00:56:24.58 ID:sGA/0Nry] 米GarageGamesがゲームエンジン「Torque 3D」をオープンソースに sourceforge.jp/magazine/12/09/11/2039230 www.garagegames.com/
903 名前:名前は開発中のものです。 mailto:sage [2012/09/13(木) 08:30:02.26 ID:58G1gAN7] ほーMITライセンスなんだ 思い切ったね
904 名前:名前は開発中のものです。 mailto:sage [2012/09/13(木) 11:57:11.78 ID:LHU8GMTz] Torqueは結構迷走してるけど、会社自体は大丈夫なのかな。 でもMITライセンスは大歓迎だ。
905 名前:名前は開発中のものです。 mailto:sage [2012/09/13(木) 12:00:35.58 ID:oVqq+2hk] とーきゅーって読むのかな
906 名前:名前は開発中のものです。 mailto:sage [2012/09/13(木) 12:15:21.64 ID:seBnVBvk] トルク
907 名前:名前は開発中のものです。 mailto:sage [2012/09/13(木) 14:51:06.70 ID:ckaemq4+] もう開発しないよ宣言な可能性
908 名前:名前は開発中のものです。 mailto:sage [2012/09/13(木) 15:53:04.73 ID:seBnVBvk] >>907 そうだよ? 「UnityとかUDKとかVisionとかNeoAxisとか出てPCでもスマホでも新規客取れない状況だわ。 ならもういっそTorque使ってゲームを作った方が会社としてマシだわ。 これまで支えて来てくれた既存ユーザーと業界のために現行版のソースとバイナリはそのまま公開するわ」 っていう趣旨
909 名前:DDD ◆qSKP3eYtY6 mailto:sage [2012/09/28(金) 14:39:56.27 ID:Ao+KlUIY] 骨組み部分は動くようになったぞ コア部分(Unityで言えばGUIでポコポコ作る部分) codepad.org/n2bhJENS スクリプト部分(Unityで言えばユーザー定義のBehaviorスクリプト) codepad.org/FJbjRKs1 動いているところ v.youku.com/v_show/id_XNDU1Mjc1MTE2.html ここまではこれ以上ないぐらいシンプルに実装できていると思う 来月はアニメーションとスキニング
910 名前:名前は開発中のものです。 mailto:sage [2012/09/28(金) 14:43:11.02 ID:/GjltfpL] >>909 すげぇ OpenGL3以降ベースのゲームエンジンって少ないから頑張って欲しい
911 名前:名前は開発中のものです。 mailto:sage [2012/09/28(金) 14:53:23.12 ID:acwnFDZO] 中華か…
912 名前:名前は開発中のものです。 mailto:sage [2012/09/28(金) 17:24:24.69 ID:PqQHbJ7G] がんばってくれ。 いいものであるなら金払ってもいいから。
913 名前:名前は開発中のものです。 mailto:sage [2012/10/03(水) 13:54:44.18 ID:41pE2PfQ] 〜無双、なんて(ry
914 名前:名前は開発中のものです。 mailto:sage [2012/10/07(日) 03:33:29.31 ID:waNmdRMa] 一人称カメラの動きを細かく設定できるエンジンって何があるか知らない?
915 名前:名前は開発中のものです。 mailto:sage [2012/10/07(日) 14:05:34.36 ID:vN4vuB14] 俺のエンジン(未公開)
916 名前:名前は開発中のものです。 mailto:sage [2012/10/11(木) 20:13:04.47 ID:GvttqXGw] >>912 お前にとって良いものとは何なんだ? 箇条書きで答えよ!
917 名前:名前は開発中のものです。 [2012/10/17(水) 23:22:39.19 ID:Pfzws2L+] 本見ながらjavaでのAndroidゲーム作成勉強してるんですが、java自体が全部理解できてなくて一苦労。 皆さんはjavaをどうやって学びましたか?
918 名前:名前は開発中のものです。 mailto:sage [2012/10/18(木) 03:45:35.27 ID:Fx0NYEIC] 2chで聞かずに自分でググって学びましたよ
919 名前:名前は開発中のものです。 mailto:sage [2012/10/18(木) 07:39:11.43 ID:nmJHTTqt] >>917 ゲーム作って学びました。
920 名前:名前は開発中のものです。 mailto:sage [2012/10/18(木) 11:59:59.97 ID:cLLtBdhn] javaじゃなくてC#使ってるけど、言語自体って結局慣れだから、 わからないとこは飛ばしていって次進んで、わかんないとこにぶち当たったら またわかんなかったとこに戻るみたいにするのがいいと思う。 知識って本を何週も回し読みしたら、その分力つくと思うし。
921 名前:名前は開発中のものです。 mailto:sage [2012/10/18(木) 15:40:44.04 ID:ye+6Lt4M] オープンソース読むのもいいんじゃないかな? ゲームエンジンも既に公開されてるのがあるから、 それを自分好みに改造しながらスキルつけるってのがいいのではなかろうか。
922 名前:名前は開発中のものです。 [2012/10/18(木) 19:15:35.62 ID:ZEhkL4/X] みなさん、ありがとうございます! 分からないところは前に戻って復習しながら進めます。 ちょっと焦ってしまいました(・・;)
923 名前:名前は開発中のものです。 mailto:sage [2012/10/18(木) 22:40:03.22 ID:cLLtBdhn] >>922 androidは詳しくないけど、ああいうのってvisual studioとかjava版のVSみたいなので GUIアプリ作った経験があったほうがいいから、とりあえずCUIで文字列のみのをやったほうがいいかもね。 言語でつまってるならなおさら。 オブジェクト指向の話は知っといたほうがいいけど、言語のすべてをアプリ開発で使うわけじゃないし、 (map,vectorとか、知ってたほうがいいけど)気が向いたらアプリの本やってもいいと思う。言語と交互で。 読んでてわからないことがあったら、メモでもして必ず調べる。クラスとかメソッドならネットに説明あるから
924 名前:名前は開発中のものです。 [2012/10/19(金) 16:22:37.38 ID:JZnGlke5] >>798 生きてたら再うpしてくれ 最新バーでも嬉しい
925 名前:名前は開発中のものです。 mailto:sage [2012/10/20(土) 22:15:44.75 ID:z0wc2dTp] >>924 どっかに残ってなかったかな・・・。 最新版は色々変わりすぎ+変えている途中だから危険。
926 名前:名前は開発中のものです。 mailto:sage [2012/10/25(木) 21:39:37.55 ID:gKqGB4cG] >>925 変わりまくってて良いから欲しいっす…
927 名前:DDD ◆qSKP3eYtY6 [2012/11/02(金) 11:07:40.77 ID:nbtbyhZ7] 生存確認がてらスキンアニメーション ・codepad.org/ylcEHDlR ・v.youku.com/v_show/id_XNDY5ODkwMjk2.html スキンアニメーションは基本的に2パスを想定していて 1パス目がTransformFeedbackを使った変形で、2パス目が変形後の頂点を(普通に)描画する。 用語はすべてJason GregoryのGame Engine Architectureにあわせてある。 ボーンのローカル座標からモデル座標に変換する方が「ポーズ行列」で静止姿勢が「バインドポーズ」。 従って「逆バインドポーズ行列」と「カレントポーズ行列」をかけたものが「スキニング行列」。 これらの行列はGetInvBindPoseMatrix(), GetCurrentPoseMatrix(), GetSkinningMatrix()で取得できる。 この辺の実装はいろいろパターンがあってどう実装してもいいけど、 世界で一番美しく書けたと思う。いやまじで。 関係ないけどどうも世の中のJason Gregory以外のスキニングの説明とコードが気に入らなくてなんだかなあと思う。 Jason Gregoryの本を読めば一発でわかる事をなぜあんなに分かりにくく書くのか・・・ ネーミングは多少気に入らない。TransformFeedbackBufferはいくら何でも長すぎる! TransformVertexBuffer(←変形前)も微妙におかしい。この辺の名前は改善の余地がある。
928 名前:DDD ◆qSKP3eYtY6 [2012/11/02(金) 11:08:11.55 ID:nbtbyhZ7] 次は遅延レンダリング。fp32のオフラインレンダリングはできるようになったのであと少し。 できればHDRの後処理も入れたいので(その方が綺麗だ!)歩みは遅いけどがんばろう。 ガンダムオンラインのCβやってる場合じゃない罠 面白かったからいいけど。
929 名前:名前は開発中のものです。 mailto:sage [2012/11/02(金) 12:42:47.20 ID:nIzM7h3m] 相変わらずすげー。 ところでイチャモンつけるようで申し訳ないんだけど それシリアライズを考慮してるの? アピアランスでラムダ使ってるからそのへん難しいのでは。
930 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 22:06:37.59 ID:iMuxzy4b] DirectX上でWindows風GUIのエンジンって需要あるかな?
931 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 22:21:14.32 ID:4ruuHy6d] 需要は作るもんだよ
932 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 23:31:48.97 ID:iMuxzy4b] とりあえずこんな感じなんだが ttp://www.dotup.org/uploda/www.dotup.org3648345.zip
933 名前:名前は開発中のものです。 mailto:sage [2012/11/21(水) 23:51:47.19 ID:iMuxzy4b] 間違えた・・・こっちだった ttp://www.dotup.org/uploda/www.dotup.org3648462.zip
934 名前:名前は開発中のものです。 [2012/12/08(土) 13:48:53.85 ID:jgPnjvbb] ttp://green.ribbon.to/~erog/GIGA/Programer.html
935 名前:名前は開発中のものです。 mailto:sage [2013/07/10(水) 11:13:52.54 ID:5ntm98R0] ノベル・ADV系エンジンだったら今なら何を勉強するのがお勧めですか? 携帯型アプリ対応見込んだ方が将来的にはいいと思います?
936 名前:名前は開発中のものです。 mailto:sage [2013/07/10(水) 18:26:28.01 ID:hXavos25] 目的によるとしか。 単にノベルゲームが作りたいなら何でも良いから使ってみればいいし、 自分で同等のエンジンを作りたいならオープンソースの奴のソースを見ればいい。 必要なのはテキストパーサーとサウンド&画像の表示と シーン全体のセーブ/ロードができればなおいい(これは難しい)。 あとアニメーションの仕組みはエンジンによってピンキリ
937 名前:名前は開発中のものです。 mailto:sage [2013/07/12(金) 00:43:58.57 ID:rEbmw96f] 質問です シーン(レベル)の切り替えで永続したいデータ(自キャラとか)はどうやって記述するのがいいでしょうか シーンがノードのツリーで表されているとしてその一部のノードを次のシーンに持ち越したい ゲームを作っていると必ずある処理だと思うのですが、これといった定番の方法が思いつきません
938 名前:名前は開発中のものです。 [2013/07/12(金) 00:45:15.00 ID:rEbmw96f] あげときます
939 名前:名前は開発中のものです。 mailto:sage [2013/07/15(月) 00:36:32.21 ID:PRrwRVkL] シーンの外に持つに決まってんじゃねーか。
940 名前:937 mailto:sage [2013/07/15(月) 01:08:01.92 ID:Nmr8nTDx] でもレベル実行中はシーングラフの中にいた方がいいですよね そうするとシーン遷移の時に切り離して付け直すのは記述が難しいから止めるとして、 ノードをキー、バリュー方式でストックしておく永続データ置き場みたいなものを作るべきでしょうか。 UnityはDontDestroyフラグだった記憶がありますが、それはUnity社が馬鹿だからそういう実装になっているのでしょうか。
941 名前:名前は開発中のものです。 mailto:sage [2013/07/15(月) 03:27:44.53 ID:IbujTVuD] UnityはGUIで画面にものを置いていく関係でそうなってるのかな?