ゲーム開発

プロおよび独立系ゲーム開発者向けのQ&A

1
カスタムTexture2Dがぼやけるのはなぜですか?
いくつかのWWWオブジェクトに.PNGイメージをダウンロードさせます。 ((SpriteRenderer)renderer).sprite = Sprite.Create(request.texture, new Rect(0,0,100,100)); 私のスプライトはうまく見えます。 ここで、少し冗長にTexture2Dして、ダウンロードからバイトを作成します。 Texture2D t = new Texture2D(100,100); t.LoadImage(request.bytes); ((SpriteRenderer)renderer).sprite = Sprite.Create(t, new Rect(0,0,t.width,t.height)); 技術的には、これにより上記のスニペットと同じものが生成されます。ただし、スプライトはぼやけています(低品質など)。 電話するときだと思いますLoadImage。これは何が原因ですか?
8 unity  textures 

1
Unity3D-2Dスプライトをテッセレーションする方法?
2Dスプライトで動的な頂点ライティングを使用しています。大きいスプライトでは、小さいスプライトよりも照明が醜くなります。これは、すべてのスプライトが2つの三角形の四角形であるためです。広い領域を照らすのに十分な頂点がありません。 スプライトでより多くの三角形を使用する方法はありますか?彼らがカバーしている画面スペースの大きさにもよるでしょうか?

1
ソースエンジンのNPCモデルをプレーヤーモデルに変換するにはどうすればよいですか?
ソースエンジンのNPCモデルとプレーヤーモデルは異なります。プレーヤーに適用されたNPCモデルにはアニメーションがありません。それは歩くことができず、腕を脇に約1フィート保持します。武器は右手に持ち、プレイヤーが武器を切り替えるのを見ることができますが、武器にはアニメーションもありません。 これらのモデルタイプ間で変換するにはどうすればよいですか?

1
分散シャドウマップは適切にレンダリングしたくない
エンジンにVSM(およびESM)を実装しましたが、ネットワークで公開されている多くの例で期待した結果が得られませんでした。 シャドウマップのフィルタリングをGL_LINEARに設定しましたが、結果を通常のシャドウマップと比較すると、明らかに悪くなります。 ほとんどのチュートリアルと同じように、ポイントライトシェーダーで直接モーメントを計算するか、テクスチャから取得しましたが、結果は同じです。 コード: uniform samplerCubeShadow shadowMap; ... vec4 worldSpace=inverse(ViewMatrix)*vec4(pos,1); vec4 coord=LightViewMatrix*worldSpace; vec4 abs_coord=abs(coord); float fs_z=-max(abs_coord.x, max(abs_coord.y, abs_coord.z)); vec4 clip=LightProjectionMatrix*vec4(0.0,0.0,fs_z,1.0); float d2=(clip.z / clip.w)*0.5+0.5; // clamp to [0..1] ... float shadowTexel=texture(shadowMap,vec4(coord.xyz,d2)); // VSM (Variance Shadow Map) // get partial derivatives float dx = dFdx(d2); float dy = dFdy(d2); vec2 moments …

2
ステンシルシャドウ-ドゥーム3エンジン-精度エラー-シャドウクラック-なぜですか?
最大マップサイズに関して、Doom 3エンジンの制限をテストしています。 オブジェクトがマップの原点から遠ざかるにつれて、ステンシルシャドウの精度エラーがさらに顕著になることに気づきました。 位置:-10901 -18214 -11204 位置:-10802 -26483 -19383 位置:-10802 -34683 -27540 これらのエラーは「シャドウクラック」と呼ばれていたと思いますが、これらのアーティファクトが以前に何と呼ばれていたかはわかりません。 ほぼすべてのアーティファクトがライト/シャドウの境界に沿って表示されます-これは次のとおりです。 ステンシルシャドウを使用して、このタイプのグラフィックアーティファクトを見たことがありますか?彼らは何と呼ばれている?原因は何ですか? その他の例: これは、ここにあるバニラドゥーム3エンジンです:https : //github.com/TTimo/doom3.gpl r_useOptimizedShadows cvar(worldspawnジオメトリのシャドウボリュームを処理する)をテストしているときに、アーティファクトが消えていることに気付きました。それから私はこの関数に私の方法を働きました: R_LinkLightSurf( &vLight->globalShadows, tri, NULL, light, NULL, vLight->scissorRect, true /* FIXME? */ ); 私はこれに変更しました: R_LinkLightSurf( &vLight->globalShadows, tri, NULL, light, NULL, vLight->scissorRect, false /* FIXME? */ ); これによりアーティファクトが取り除かれますが、今度は、worldspawnジオメトリのシャドウボリューム内にいることはないと想定しています。したがって、シャドウボリュームの内部に移動すると、そのシャドウボリュームは適切にレンダリングされません。
8 opengl  shadows 

2
正投影の解像度に依存しない2Dゲームでサブピクセル値を回避する方法
2Dゲームで動くスプライトの解像度に依存しないレンダリングをしようとしています。私の計画は私の世界の固定座標系(たとえば960x540)で作業し、正投影を使用してビューポートに合わせて拡大または縮小します。レターボックス化して、さまざまなアスペクト比を処理します。 ほとんどのチュートリアルによると、私はビューフラスタムに好きな次元を自由に使用できますが、多くの場合、ビューポートでサブピクセル値を使用することになるという問題につながることがわかりました。たとえば、960 x 540の座標系の(62,62)にある頂点は、寸法800 x 450のビューポートの(51.6666667,51.6666667)に終わります。 私はそれに2種類の問題に気づきました: テクスチャサンプリングは、動いているオブジェクトの場合、頂点がピクセルの中心に関連する場所に応じて常に変化します 丸めが原因で、オブジェクトが水平または垂直に1ピクセルずつ伸びる これを回避するためのベストプラクティスは何ですか(移動速度などに関して解像度の独立性を維持しながら)?そして、これに対処するのに最適な場所はどこですか?頂点をシェーダーに渡す前、または頂点シェーダー内に?
8 opengl  2d  opengl-es2 

2
「通常の」ブレンドモードとOpenGLのトラブル
OpenGLブレンド関数を期待どおりに(または賢明な画像編集プログラムから)期待どおりに機能させるのに苦労しました。例として、次の2つの画像を使用してブレンドします(白い背景では見づらいので、色がラベル付けされます)。 合成する画像 これは私が起こると期待していることです(そしてpaint.netで何が起こるか): 期待される結果 明らかに、openglのデフォルトのブレンド関数は、次のようになります(非常に間違っています)。 glBlendFunc(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA) たくさんのテストの後、これは私が「良い」ブレンド関数を作成するために得ることができる最も近いものです: glBlendFuncSeparate(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA) ただし、元の予想結果を振り返ると、一部の色が本来よりも少し暗くなっていることがわかります(中央左部分)。具体的には、それらは(.5アルファのため)カラー値の半分に事前に乗算されており、これを行わない関数を作成することはできません(ほとんど見えない赤い透明部分で奇妙な混合の問題を引き起こすことなしに)。 誰かがこの問題の解決策を知っていますか?ソースであらかじめ乗算されたアルファを使用する必要がありました(ゲームで使用するすべての色をあらかじめ乗算された色に変換するか、各シェーダーに何かを書き込むために追加の作業が必要なため、これを行いたくありません)。 : glBlendFuncSeparate(GL_ONE、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA)(事前乗算なし) 明らかにそれも間違っていますが、これが実際に私がこれまでに得た唯一の正しい結果です。 glBlendFuncSeparate(GL_ONE、GL_ONE_MINUS_SRC_ALPHA、GL_ONE、GL_ONE_MINUS_SRC_ALPHA)(事前乗算された入力) 唯一の問題は、それを画面に表示するための事前乗算をどのようにして取り除くのですか?ブレンドするものごとに追加のレンダーサイクルが必要になる可能性があり、この問題には複雑すぎるように思われるので、私はまだ答えを探しています(OpenGLは非常に広く使用されているため、これについて何かを見つけることができないのは興味深いことです)他の誰かがこの問題に遭遇したと思います)。 出典: オンラインブレンド機能検査- http://www.andersriggelsen.dk/glblendfunc.php 下層イメージ- http://i.stack.imgur.com/XjLNW.png トップレイヤーイメージ- のhttp://i.stack.imgur .com / 9CN6w.png

2
ゲームはアジアのユニコードテキストのレンダリングをどのように処理しますか?
私は現在、ゲームエンジンにテキストレンダリングを実装している最中です。AngelCodeのBMfontを使用してフォントテクスチャを生成し、OpenGLで各文字のテクスチャクワッドをレンダリングすることにしました。これは、FreeFont(特にFreeMono)でサポートされているすべてのグリフをレンダリングする場合でも、日本語をレンダリングしようとするまではうまくいきました(私の選択した日本語フォントはGoogleが提供するNotoです)。 FreeMonoでサポートされているすべてのグリフを16pxでレンダリングすると、1024x1024の8ビットテクスチャが1つ生成されます。能登日本語でサポートされているものをすべて同じサイズでレンダリングすると、テクスチャの数は13倍になり、このサイズではほとんどのグリフが窮屈すぎて判読できません(日本語を読むことはできませんが、できれば、まだこのテキストを読むのに多くの問題があります)。 私の質問は2つあります。 1)ゲームやモバイルアプリは、小さな日本語のテキストをどのように処理しますか?彼らは漢字のサブセットに固執しますか、特別なフォントを使用しますか、それとも最小フォントサイズはありますか? 2)ゲームは通常、日本語、中国語、韓国語、およびその他の言語で必要とされる非常に多くのグリフをどのように処理しますか?彼らはFreeType(または類似のもの)を使用してテキストをオンザフライでレンダリングしますか? 注:私はメイリオ(私のゲームで使用するためのライセンスを持っていません)を試してみましたが、結果は16pxではるかに読みやすくなりました(まだ窮屈です)が、すべてに適合するには14のテクスチャが必要でした。

2
特定のポイントを囲む最も近いポイント(それによってポリゴンを形成する)を見つけるにはどうすればよいですか(画像を参照)
私はゲームエンジンを使用していますが、私の仕事は、剛体メッシュの破壊をシミュレートするコードを追加することです。 現在、私はキューブの破壊に取り組んでいます。 私はボロノイのアルゴリズムを使用して(現実的な)破片を作成し、半平面法を使用してボロノイセルを生成しています。 これを行う方法はすべてのシードポイントに対してです。残りのシードポイントを使用して、垂直二等分面(画像の直線の黒い線)である平面を作成し、これらのすべての平面の交点を計算して、明確なポイントを与えます(すべてのオレンジ色のドット)。 ここまで来ました。 これらの計算されたすべての交点のうち、シードポイント(赤で囲まれたポイント)を最も近くかつ囲んでいる交点のみが必要であり、残りはすべて破棄する必要があります。 私が持っている情報: 1)すべての平面の平面方程式(正規化された法線ベクトルと原点からの距離で定義) 2)交点(計算したもの) 誰かが私が赤で囲まれたポイントを見つける方法を見つけるのを手伝ってくれる?

2
プログラムによって、インストールされたアプリストアのインストールを確認しますか?
バックグラウンド 私のアプリには、「評価」ボタンがあります。通常のパスに従います-ユーザーがクリックしてインテントを開始し、Playストアでアプリのリストを開きます。すべて順調です。ここで、さまざまなアプリストア(Amazonなど)経由でアプリを配布したいので、ユーザーが「評価」ボタンを押した場合、ユーザーをGoogle Playストアに移動させたくありません。彼らがそれを得た店。 各店舗のAPK これは可能ですが、管理することは完全な悪夢になると思います(新しい更新を発行するたびに各ストアに新しいAPKを作成するなど)。 だから私はこの擬似コードのようなものを探しています: if(rate-me button pressed){ if (from Google Play Store){ Go to Google Play Store } else if (from Amazon Store){ Go to Amazon Store } } 等々....... 方法はあると思いますが(一部のアプリでは確実に使用する必要があります)、どうすればよいかわかりません。

1
タッチトリガーは最小でどれくらい小さくすべきですか?
選択のみ(長押しやドラッグは不可)を考慮した、信頼できるタッチ選択トリガーの既知の最小物理サイズはあります か?個人的な経験から、約5x5 mm(0.2x0.2インチ)だと思います。正解はありますか? コンテキスト:チェスのようなゲームボードにできるだけ多くのセルを作成したいのですが、頻繁にアクションが発生するため、ユーザーがセルを快適に選択できるようにしてください。

1
商用ゲームエンジンはどのようにインデックス/頂点バッファーを編成しますか?
序文:この質問は、Direct3Dの視点からのものになります。これは、私がよく知っていることだからです。 明らかに、Direct3Dで頂点バッファーまたはインデックスバッファーを変更するたびに(つまりを使用してIASetIndexBuffer)、わずかなオーバーヘッドが発生します。しかし、1つの巨大なインデックス/頂点バッファーを割り当てると、メモリを手動で管理しなければならず、断片化の問題(または、すべてのデータを交換している間、一時停止)になるでしょう。 では、商用エンジンはどのようにデータをロード/アンロードするのでしょうか?私は「パッケージ」ベースのアプローチに少し傾いているので、モデルの「パッケージ」には、パッケージが不要になったときにロード/アンロードできる独自の頂点/インデックスバッファーがあります。そして、同じパッケージからすべてのインスタンスを一緒に描画しようとします。 しかし、これを処理するための受け入れられた/標準的な方法が何であるか聞いてみたいですか?

3
タイルベースのマップに収まるが、複数のタイルにまたがる遠近法でオブジェクトを作成するにはどうすればよいですか?
私はタイルマップ都市を作成し、ユニークな建築シーンを作成する最も効率的な方法を見つけようとしています。コツは、2Dのような、ほぼ真上から見下ろしたパースペクティブを維持する必要があることです。これは、複数のタイルにまたがる建物や大きなオブジェクトでは困難です。 私は一度に3つの建物を作成して、次のようにベースレイヤーと色を混ぜ合わせてみました。 これは奇妙なオーバーラップ効果を生み出し、また、制作の観点からはそれほど効率的ではないようです。しかし、これは隣接する建物に影を正しく表示するための最良の方法でした。 モジュール式の建物が行く方法になるのだろうか?このようにして、任意の建物のセットをタイルとして組み合わせて組み合わせることができます。 建物を正しく配置するために、遠近法や影を付ける必要があると思います。 複数のタイルに相当する画面スペースにまたがっている間、このパースペクティブを維持するさまざまな建物(または他のオブジェクト)を作成できるようにするには、どのようなオーサリングプロセスを使用できますか?空白の建物を作成し、建物をユニークにするために必要に応じてアートオーバーレイを貼り付けることをお勧めしますか?または、それらを直接建物タイルの一部にする必要がありますか(たとえば、建物の看板と色の個別のタイルセットを作成します)?
8 tiles  tilemap  rpg  art 

2
純粋なOpenGLソフトウェアレンダリング
機械学習アルゴリズムをトレーニングするには、ハードウェアレンダリングサポートなし(グラフィックカードなし)で一部のジオメトリをOpenGLでレンダリングする必要があります。したがって、純粋なソフトウェアでのレンダリングを考えていましたが、すでにMesaを見てきました。純粋なソフトウェアでレンダリングできるようですが、今のところOpenGL 2.xしか入手できませんが、OpenGL 3.3が必要です。 それが可能かどうか誰か知っていますか?もしそうなら、どうやって?私たちはいつもつまずきに遭っているようです。 (背景、それを行う理由:学習アルゴリズムをトレーニングするために、ハードウェアでのレンダリングを許可しないPCクラスター上でソフトウェアの多くの実行を実行する必要があります。) 任意のヒント、アイデア、およびポインターが高く評価されます。

1
アダプティブメッシュとプログレッシブメッシュ
これら2つの違いはありますか?グーグルの「アダプティブメッシュとプログレッシブメッシュ」では何も見つかりませんでしたが、両方を個別にググリングすると、まるで同じであるかのように結果が得られます。
8 mesh 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.