約 2,447,872 件
https://w.atwiki.jp/ttmario64/pages/13.html
画面の見かた 全部読むのは大変なので分からない奴だけをCtrl+Fで検索するのが吉 画面の見かたLevel Editor Commands Objects Edit Texture Preferences 全体像 Level Editor 一番上の段のやつです Open ROM... ROMファイルを開きます。 Save 改造したROMをセーブできます。 Launch ROM 関連付けしているエミュでROMを起動します。 Edit Texutures テクスチャを弄ることができます。 Preferences... 設定を変えられます。 Quit TT64を閉じます。 Course 編集するコースを選択する事が出来ます Area 編集しているコースが幾つかのMAPに分かれていた場合(例:ペンギン山なら外とレースする場所) そのMAPを表示できます Acts レベル毎に表示できるオブジェクトの表示 とにかくやってみれば わかる Commands Basic 高度な編集は無し設定という設定。 Expert 高度な編集(選べるオブジェクトの増加等)ができるようになります。 Refresh 現在のエリアを再読み込み 3D Objects マップ上のメインの3Dオブジェクトを選択できます。(スター、赤ボム、ワープ、ボス等主要なもの) Macro 3D Objects マップ上の主要以外の3Dオブジェクトを選択できます。(コイン、!ブロック、雑魚敵等どうでもいいもの) Special 3D Objects マップ上の木や土台(浮いてるステージのみ)などスペシャルなオブジェクトを選択できます。 Area Music track マップのBGMの変更が出来ます。 Warp Destinations ワープ位置の設定が出来ます。 Geometry Layout Pointer マリオのモデルID変更等ができる 主要キャラ及びモデルIDの一括変更を参照 Terrain Type そのマップの地面の特性の変更ができる 豆知識を参照 Polygon ID And Pointer Copy Data to RAM Bank Decomp MIO0 to RAM Bank* Load Macro Objects Load Solidity Load Script Bank よく わからない Objects Hexadecimal 幾つかの数値を16進数にする。 Follow Selection 選択したオブジェクトを移動した時に視点も一緒に動かす Selection Boxes マップ上にオブジェクトをどれだけ表示するか。 This Command 現在選択しているオブジェクトリスト(Macro 3D Objectsとかそういうの)のみ Show ALL 全てのオブジェクトを出す(重い) Selection Only 現在選択しているオブジェクトのみ(This Commandとあまりかわらない) Keep On Ground これにチェックをいれておくと選択しているオブジェクトは常に接地した状態になる。 Drop To Ground これをクリックすると選択しているオブジェクトが地面に落ちる。 Activate Level select これにチェックをいれておくとステージ選択でデバッグモードを利用できるようになる 亀とウサギが書いてあるバー 見た目の通り右にずらすほど視界の移動が早くなる。 パレット 編集時の背景の選択。 選択しているオブジェクトが背景と同化してしまう色だった場合使う。 Front,Back,Top,Bottom,Left,Right,Orbit 編集の時の画面が、左から 正面から、後ろから、上から、下から、左から、右から、選択オブジェクト中心 の視点になる。お勧めはOrbit Fly これを選択しておくとMAPを自由に飛びまわれる 操作方法 Shift=前進 ctrl=後退 Alt+Shift=Shiftだけより早い前進 ドラッグ=見渡し Select Object これを選択しておくとオブジェクトをクリックしただけでそれを選択できるようになる。 Rotate Cam ドラッグで見回しができるようになる。 Reset Cam カメラリセット。 オレンジで十字の矢印 緑と赤の線が入っている四角い所でドラッグをすると選択しているオブジェクトが移動する。Fly以外の視点のままやると一緒にカメラも移動するので楽。 青い線が入っている長方形の所を上下にドラッグすると高さが変わる。 下にある設定は Relative=マウスを早く動かすと加速する Absolute=マウスを動かし多分だけオブジェクトが動く ↺上のやつの隣 基本的に操作は同じだが こちらは回転する カメラつき矢印 カメラの向きを変更できる。 隣の長方形の奴は近さを変えられる。 四角いボックスみたいな物が二つならんでるやつ 立体にパースをつけるかつけないか。 Wireframe ワイヤフレームで表示 Culling チェックを付けると隠れた部分を非表示 ワイヤフレーム時に使えば分かる Collision Map ぶつかる部分を表示(マリオが乗れたり、ぶつかったりする部分) Renderer 描画ソフトウェア 基本的にDirectX7で良い Basic,Expert オブジェクトの詳細設定をできるようにするかどうか。Expertがひじょうにオススメ Rom Address そのオブジェクトのアドレス 何に使うのかわからない Copy Param 選択中のパラメータをコピー コピーできるのはModelIDやBehavなど 1つしかコピー出来ないので少し使いづらい Paste Param コピーしたパラメータを貼り付け Copy Hex Data 選択したパラメータをクリップボードにコピー Revert Object ObjectComboを変更前に戻す Act フィーリングで分かると思うが、★が明るくなっているとそのレベルに選択されているオブジェクトが登場する。 Object Combo 四角いリストのような物をクリックするとCommandsにリストが出る。 それをクリックすると選択しているオブジェクトが対応したオブジェクトに変わる。もちろんIDを直接入力してもいい Model ID Object Comboと違いオブジェクトの見た目のみを変える。 Behav Object Comboと違いオブジェクトの効果のみを変える。 Model IDと組み合わせて見た目はスターの1UPキノコなども作れる。 そしてオブジェクトの大きさはBehavによって変わる(ノコノコレース、ペンギンレース等にすると大きくなる) B.Param 1 オブジェクトのパラメーターの設定。 四角いリストクリックでパラメーターを設定できるが、設定できるオブジェクトは少ない B.Param 2 上に同じ X, Y, Z そのまんまオブジェクトの位置情報を細かく設定できる X,Zは+-7800、Yは-6800~20000が有効範囲 マリオの出現位置はこの範囲内に収めないとコース選択後にフリーズするので注意 Rot X ,Y X オブジェクトの角度情報を細かく設定できる Edit Texture Display With Alpha これにチェックをいれておくとマスクを使った状態での表示がされる Export To PNG... 今選択しているテクスチャをPNGで抽出する。 Export To Folder 今選択しているテクスチャをフォルダに抽出する。 Export All To Folder 全てのテクスチャをフォルダに抽出する。 Import From PNG... 今選択しているテクスチャを置き換える。(拡張子PNGのみ) Import One From Folder, Import All From Folder 未実装 一気に全てのテクスチャ入れ替えとかできるようになるのかも Revert Texture From Rom テクスチャをもとにもどす Save Texture To ROM テクスチャのセーブ。一度入れ替えるごとにクリック Mario Size マリオのサイズを変更する。両隣のマリオをクリックすると大きくなったり小さくなったりする。数値入力もできる。 High-Poly Mario 不明。マリオがキレイになるのかも Mario Colors マリオのカラー変更 マリオの色を参照のこと Save Colors To ROM 変更したカラーをセーブする Revert Colors カラーを元に戻す Original Colors 元々のマリオの色に戻る 色の対応位置 上から つなぎの色 帽子の色 手袋の色 靴の色 髪の毛の色(もみあげは含まない) Preferences Load textures from ROM テクスチャをROMから読み込む テクスチャを変更している時の確認に便利だが、読み込みが遅くなる Auto-Save level changes オートセーブ Alternate Orbit cam widget Orbitモードの時の視点の垂直移動とズームを交換する Start with last opened level 次にTT64を起動するときに、前回最後に開いていたレベルを開く Extra info in object lists オブジェクトリストにオブジェクト番号とその説明の間に2つの情報を追加 Auto-open default pop-up menu オブジェクトを選択した時に自動的にメニューを開く Skip checksum checksumを確認しない ROMExtrenderで拡張したROMでは選択不要 checksumを変更した時には選択しないと起動しない 基本的には選択する必要は無い Default Level ROM開いた時にロードされるレベル Start with last opened levelを選択している時は無効 Interface Theme インターフェースのテーマ変更 お好みで
https://w.atwiki.jp/goodgames/pages/1156.html
御指摘いろいろ 2 長くなりそうなのでページを替えました。 御指摘 その4-1 こちらもMantleのお話。 御連絡の体裁としては、御指摘と言うよりは御質問でしたが。 -有人だとどうなるのか? -画質が違うと1フレーム描画するためのCPU負荷も違うのではないか? まずは前者から。 他のプレイヤーが多数接続し戦闘が行われている状況下では 当然のことながらさらにフレームレートは下がります。 原因はいくつも考えられますが、まず描画対象物が増えます。 人、戦車、戦闘機そして銃弾まで描画しなければなりません。 この点ではGPU負荷が上がり、相対的にCPU負荷が下がります。 しかし、戦闘中ですので多数の銃弾が飛び交っていることが想定され、 それらの弾道計算なども行う必要があります。 また、ゲームエンジンにもよるでしょうが衝突検出(いわゆる命中判定)もCPUで行うため、 この点ではプレイヤー数が増える程CPU負荷が上昇すると考えてよいでしょう。 では「有人」状態ではCPUとGPUの負荷は相対的にどちらが高くなるのか? わかりません。 こればかりは状況によって刻々と変化してしまうためベンチマークも困難です。 また、マップの差やプレイヤーの状況(歩兵かビークル搭乗中かなど)による影響も受けるでしょう。 恐らく、Mantleが実際にリリースされたら比較を行う事になると思いますが、 再現性の無い状況では比較ににならないため、 変化しない状況下で測定を行ったのが前回の記事になっています。 続いて後者。 もちろん画質が上がると1フレームあたりのCPU負荷も上がります。 ですが程度についてはケースバイケースとしか言いようが無いところもあります。 画質と言われて誰でも思い出すのがテクスチャ品質。 しかし、これは全くと言って良い程CPU負荷に影響を与えません。 ロード時にGPU(VRAM)へ転送した後は「それのテクスチャをどこどこに書いておいて」とGPUに指示を出すだけなので、 低画質であろうが高画質であろうが「それ」と言うだけで済んでしまうので全くと言う程差は出ないはずです。 (VRAMが不足してメインメモリから転送するようなケースはこの限りではありませんが) 但し、テクスチャの枚数が異なる場合には差になります。 「それとそれを書いておいて」 これだと2回GPUに命令を発効する必要がありますので、 CPUの仕事量も2倍になるかもしれません。 でも普通は画質設定によってテクスチャを使用する枚数が変わることはあまり無いように思います。 もっと影響が大きい点はそもそも描画対象の数が違うところ。 先程テクスチャについて軽く触れましたが、 GPUが扱える基本要素はテクスチャ以外には実質的にもう一つしかありません。 それはポリゴン。 皆さんのモニタに表示されている3D空間はほぼ例外なく、 三角形で出来たポリゴンで描かれています。 つまり全てのモノは三角形の集合体なんですね。 そして多数の三角形で描かれたモノの表面にビットマップを貼り付けるこれがテクスチャ。 綺麗なライティングやリアルなエフェクトも ポリゴンとテクスチャの使い方を応用しているに過ぎません。 3Dグラフィクスってこんなに単純な話だったりします。 あくまでも単純なのは原理だけですが。 脱線したので戻ります。 このポリゴンの集合体をいくつ描くかはGPU負荷に直結しますが、 「あれとあれとあれとあれと....これだけ描いて」と命令を発行するCPUの負荷にもつながります。 ちなみにMantleがウリにしているメリットをピンポイントで申し上げると、 「あれとあれと...」の命令を出す負荷がDirectXと比較すると格段に低く抑えられるそうです。 少なくともこの点では確実に効果が出るはずです。 また脱線しましたので戻ります。 低画質と高画質で描くモノの数が異なるなら、 CPUの負荷も異なることは御理解頂けたと思います。 では、本当にモノの数は違うのか? さすがに人や戦車が画質によって消えてしまうケースはあまりないでしょう。 直接的にゲームには影響を与えにくい木や草などですね。 実際に先日撮ったHyperThreading関連のScreenShotをご覧頂くと一目瞭然ですが、 4枚のScreenShotのうち上の2枚は目の前の空き地にほとんど草が生えていません。 しかし、下の2枚は立派な草むらになっています。 さて、どの程度の影響になるのか? これもわかりません。ゲームエンジン次第です。 ちなみに上記リンク先の草むらになっているScreenShotをもう一度みて頂くと、 草むらの先に50mぐらいの場所でしょうか。一段高くなって斜面になっています。 しかし、そこには草が生えていませんね。 でも近づくと草むらに化けます。 つまり、どれだけ高画質にしても目一杯細かく描画しているのは至近距離だけなんですね。 これはLOD(Level Of Detail)と呼ばれる3Dグラフィクスには欠かせない技術(?)なのですが、 「描いても見えない、描かなくても影響がほとんどない」 このようなケースを判断し合理的に負荷を下げる技術です。 もし、マップ全体が立派な草むらになっていれば、 それはGPUにもCPUに多大な負荷がかかるでしょうが、 足元だけだったら誤差程度で済むかもしれません。 いつも通りまとまりの無い文章になりましたが、 高画質化するとCPU負荷は上がる傾向にあるが、それほどでも無いかも と言ったところでしょうか。 過去の試験結果により、 少なくともフレームレートの低下に伴う CPU負荷の低下を上回る程ではないと断定して良いでしょう。 御指摘を頂きましたにお礼申し上げます。 ( - )
https://w.atwiki.jp/0303wiki/pages/47.html
テクスチャ素材 のサイトなどをまとめていきます。 デザイナーなら必ず知っておきたい国内素材サイトまとめ SoftImage XSI道場 - テクスチャサイト一覧 Flickr CC Search CC Search
https://w.atwiki.jp/we_hate_sunshine/pages/71.html
テクスチャマッピングをやっていて、ポインタについておさらいする羽目になりました。 テクスチャに用いる画像データはテクスチャバッファに格納します。 テクスチャバッファはピクセル単位で縦と横の二次元配列で表現しています。 そして、1画素(ピクセル)がR,G,B,αの4Byteデータで表されるので、テクスチャバッファは unsigned char texBuf1[横の画素数][縦の画素数][4]; で定義します。 ※テクスチャバッファは横と縦の比が同じでかつ2のべき乗になっていなければなりません。 配列を使う場合は宣言時に配列サイズを決めておかなければならないのはC言語のルールです。 しかし、サイズを予め決めておくとアプリケーションとして自由度が低下する恐れがあります。 なので、そのような場合、 実行中にサイズを計算して必要な配列のメモリを随時確保(メモリの動的確保)する手が考えられます。 しかし相手は多次元配列(三次元配列)です。これを動的に確保しようとするとかなりややこしくなります。 配列へのポインタ そしてその配列へのポインタを要素に持つ配列へのポインタ さらにその配列ポインタをを要素に持つ配列へのポインタ で表現します。 unsigned char*** texBuf2; // 三次元配列を表す。 //メモリ確保の仕方 texBuf2 = (unsigned char***)malloc(横の画素数); for(i = 0; i 横の画素数; i++) { texBuf2[i] = (unsigned char**)malloc(縦の画素数); for(j = 0; j maxY; j++) { texBuf2[i][j] = (unsigned char*)malloc(4); } } こうやってメモリを確保することで、 texBuf1もtexBuf2も同様にtexBuf○[10][10][2]というように要素にアクセスすることができます。 しかーし、両者は同様に要素の参照が可能で、見かけは似ていますがコンパイラは両者を完全に区別しています。 前者は確かにそのまま多次元配列と呼ばれるのですが、後者はディスプレイと呼ばれるらしいです。 同違うのかっ。これが難しいんです。 詳しい説明は長くなるので、一番顕著な違いを(理由もなしに)言うと、 1次元配列で表せるか否かです。 texBuf1は1次元配列で表せれますがtextBuf2は表せれません。 この違いの影響がもろに出るのは関数の引数です。 OpenGLでテクスチャを当てはめる関数はglTexImage2D()という関数で、引数にテクスチャバッファを指定します。 どんな型で受け取るかというとGLVoid*型で受け取ります。 要は配列へのポインタを受け取りますという意味なんですが、 これだけでは中でどのように要素にアクセスしているのかわかりません。 けど一つ言えることは、どのように要素にアクセスしてもいいような配列のポインタを渡せということです。 (配列は色々アクセスの仕方があるのです) で、つまりのところtextBuf2はアクセスの仕方によって正しい要素の値を取得できないので、 引数に与えることはナンセンスです。 先にも言ったように1次元配列で表せれないからってことに関わってくるんですが、 それはなぜかというと、参照の仕方が違うからです。 例えば[]による参照ではなく、ポインタで参照していくと、 texBuf1の場合、*(texBuf1++)するごとにR→G→B→α→Rと連続して値を取得していけます。 しかし、texBuf2の場合、横成分、縦成分、RGBA成分を表す配列がばらばらにメモリ空間に存在します。 つまり、*(texBuf2++)をして取得できるのは横の一列のRの値だけです。 うーん、難しいです。要はC言語で多次元配列の動的確保は極力避けるべきだということです。 なのでどーするかというと、 unsigned char* texBuf3 = (unsigned char*)malloc(横の画素数 * 縦の画素数 * 4); というように1次元配列で確保する必要があったわけです、はい。 とまぁ、改めてポインタの奥深さを知った一日でした。 「ディスプレイ」って言葉ははじめて聞きました。なるほど。 -- ぷん (2007-04-02 02 54 52) ぷんこなら常識、ぜたいはまんねー、とオモタ -- NZ-000 (2007-04-02 12 34 05) へーOpenGLなんてやってんのね。winじゃもうDirectXしか聞かないけど。 -- qutto (2007-04-05 00 32 34) キャストの型が合ってなくない? -- qutto (2007-04-05 00 32 44) まじ? -- NZ-000 (2007-04-05 00 48 56) 修正した。 -- NZ-000 (2007-04-07 03 04 46) 名前 コメント
https://w.atwiki.jp/darui_program/pages/257.html
今回は、バンプマッピングを載せます。 バンプマッピングは、凹凸の無い平面をライティングによって 凹凸があるかのように見せる技術です。 バンプマッピングを行うのに2種類のテクスチャが必要になります。 法線情報をテクスチャに書き込んだ法線マップとデカールテクスチャが必要になります。 デカールテクスチャ 例 法線テクスチャ 例 法線テクスチャを自分で作るのは面倒なので 自分はGIMPというフリーソフトの法線マップを出力するツールを使っています。 http //nifelheim.dyndns.org/~cocidius/normalmap/ 以下実装 バンプマッピング //グローバル変数宣言 float4x4 world; //ワールド行列 float4x4 view; //ビュー行列 float4x4 projection; //プロジェクション行列 float3 light = float3( 10.0f, 10.0f, 10.0f ); //ライトの位置 sampler2D base; //テクスチャ sampler2D normal; //法線テクスチャ //入力頂点構造体 struct VS_INPUT { float4 position POSITION; //頂点座標 float3 normal NORMAL; //法線ベクトル float2 texcoord TEXCOORD0; //テクスチャ座標 float4 color COLOR00; //色 float3 tangent TANGENT0; //接ベクトル float3 binormal BINORMAL0; //従法線ベクトル }; //出力頂点構造体 struct VS_OUTPUT { float4 position POSITION; //頂点座標 float3 normal TEXCOORD1; //法線ベクトル float2 texcoord TEXCOORD0; //テクスチャ座標 float4 color COLOR0; //色 float3 light TEXCOORD4; //ライトベクトル float3 view TEXCOORD2; //ビューベクトル float3 halfAngle TEXCOORD3; //二等分ベクトル }; //頂点シェーダー VS_OUTPUT vs_main( VS_INPUT input, uniform float4x4 world, uniform float4x4 view, uniform float4x4 projection, uniform float3 light ) { VS_OUTPUT output; //ワールドビュー行列 float4x4 WV = mul( world, view ); //法線ベクトルの座標変換 output.normal = mul(input.normal,(float3x3)WV); //ワールドビュープロジェクション行列 float4x4 WVP = mul( WV, projection ); //視点座標系の頂点を求める float3 PosEye = mul( input.position, WV ); //視点座標系のライト位置を求める float3 LightPosEye = mul( light, (float3x3)view ); //ライト方向のベクトルを求める float3 L = normalize( LightPosEye - PosEye ); //視点方向のベクトルを求める float3 V = normalize( -PosEye ); //二等分ベクトルを求める float3 H = normalize( L+V ); //法線ベクトルの座標変換 float3 N = mul( input.normal, (float3x3)WV ); //接ベクトルの座標変換 float3 T = mul( input.tangent, (float3x3)WV ); //従法線ベクトルの座標変換 float3 B = mul( input.binormal, (float3x3)WV ); //テクスチャ座標系に変換する行列を作成する float3x3 TBN = float3x3( T, B, N ); //L,V,Hベクトルをテクスチャ座標系に変換 output.light = mul( TBN, L ); output.view = mul( TBN, V ); output.halfAngle = mul( TBN, H ); //頂点座標の座標変換 output.position = mul(input.position,WVP); //テクスチャ座標を設定 output.texcoord = input.texcoord; //色を設定 output.color = input.color; return output; } //ライトカラー float4 Ambient = float4( 1.0f, 1.0f, 1.0f, 1.0f ); float4 Diffuse = float4( 1.0f, 1.0f, 1.0f, 1.0f ); float4 Specular = float4( 1.0f, 1.0f, 1.0f, 1.0f ); //マテリアルカラー float4 Ka = float4( 0.2f, 0.2f, 0.2f, 1.0f ); float4 Kd = float4( 0.6f, 0.6f, 0.6f, 1.0f ); float4 Ks = float4( 1.0f, 1.0f, 1.0f, 1.0f ); float power = 90.0f; //入力ピクセル構造体 struct PS_INPUT { float2 texcoord TEXCOORD0; //テクスチャ座標 float4 color COLOR0; //色 float3 normal TEXCOORD1; //法線 float3 light TEXCOORD4; //ライトベクトル float3 view TEXCOORD2; //ビューベクトル float3 halfAngle TEXCOORD3; //二等分ベクトル }; float4 ps_main( PS_INPUT input, uniform float4 Ambient, uniform float4 Diffuse, uniform float4 Specular, uniform float4 Ka, uniform float4 Kd, uniform float4 Ks, uniform float power, uniform sampler2D base, uniform sampler2D normal ) COLOR0 { //各ベクトルを正規化 float3 L = normalize( input.light ); float3 V = normalize( input.view ); float3 H = normalize( input.halfAngle ); //法線マップから法線ベクトルを取得 float3 N = normalize( tex2D( normal, input.texcoord ).xyz * 2.0f - 1.0f ); //拡散反射光、鏡面反射光を計算する float diffuse = max(dot(N,L),0.0f); float specluar = pow(max(dot(N,H),0.0f),power); //ベーステクスチャのカラーを取得 float4 baseColor = tex2D(base, input.texcoord ); //環境光、拡散反射光、鏡面反射光を計算する float4 totalAmbient = Ambient * Ka * baseColor; float4 totalDiffuse = Diffuse * Kd * diffuse * baseColor; float4 totalSpecular = Specular * Ks * specluar; //最終的なカラーを計算する float4 color = totalAmbient + totalDiffuse + totalSpecular; return color; } technique bumpmapping { //パスの指定 pass Pass_0 { VertexProgram = compile arbvp1 vs_main( world,view, projection, light ); FragmentProgram = compile arbfp1 ps_main( Ambient, Diffuse, Specular, Ka, Kd, Ks, power, base, normal ); } } メインプログラム #include "Matrix4.h" #include "Color4.h" #include "Vector2.h" #include "Vector3.h" #include "MathUtility.h" #include "TGATexture.h" #include "Shader.h" #include iostream #include GL/glew.h #include GL/glut.h #pragma comment( lib, "glew32.lib" ) static void display(); static void idle(); static void key( unsigned char state, int x, int y ); static void initializeGL(); static void initializeCg(); namespace { //バンプマップシェーダー Shader* bump = NULL; //ワールド行列 Matrix4 World; //透視変換行列 Matrix4 Projection; //ビュー行列 Matrix4 View; //回転角度 float angle; } //メイン関数 void main( int argc, char* argv[] ) { glutInit( argc, argv ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH ); glutInitWindowPosition( 0, 0 ); glutInitWindowSize( 640, 480 ); glutCreateWindow( "BumpMapping Shader Test" ); //初期化 initializeGL(); initializeCg(); //関数の登録 glutDisplayFunc( display ); glutIdleFunc( idle ); glutKeyboardFunc( key ); glutMainLoop(); } void initializeGL() { glewInit(); glClearColor( 0.0f, 0.0f, 1.0f, 1.0f ); glViewport( 0, 0, 640, 480 ); //OpenGLでは何もさせない //透視変換行列の設定 glMatrixMode( GL_PROJECTION ); glLoadIdentity(); Projection.setIdentity(); Projection.setPerspective( 45.0f, 640.0f/480.0f, 0.1f, 100.0f ); //ビュー行列の設定 glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); View.setIdentity(); View.setLookAt( Vector3( 0.0f, 0.0f, 5.0f ), Vector3( 0.0f, 0.0f, 0.0f ), Vector3( 0.0f, 1.0f, 0.0f ) ); //回転角度の初期化 angle = 0.0f; //ワールド行列の設定 Matrix4 translate, scale, rotate; translate.setIdentity(); translate.setTranslate( Vector3( 0.0f, 0.0f, 0.0f ) ); scale.setIdentity(); scale.setScale( Vector3( 1.0f, 1.0f, 1.0f ) ); rotate.setIdentity(); rotate.setRotateY( angle ); World = translate * scale * rotate; glDisable( GL_DEPTH_TEST ); glDisable( GL_LIGHTING ); glDisable( GL_CULL_FACE ); TGATexture load( 0, "rockwall.tga" ); TGATexture load( 1, "rockwall_normal.tga" ); } void initializeCg() { //シェーダーの生成 bump = new Shader( "BumpMapping.cgfx" ); //テクニックの取得 bump- setTechnique( "bumpmapping" ); //パラメータの設定 bump- setParameter( "world", World ); bump- setParameter( "view", View ); bump- setParameter( "projection", Projection ); bump- setTexture( "base", TGATexture getID( 0 ) ); bump- setTexture( "normal", TGATexture getID( 1 ) ); } //描画 void display() { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); bump- begin(); for( unsigned int pass = 0; pass bump- getPassNum(); pass++ ) { bump- setPass( pass ); glBegin( GL_QUADS ); glNormal3f( 0.0f, 0.0f, 1.0f );//法線ベクトル glVertexAttrib3f( 14, 1.0f, 0.0f, 0.0f );//接ベクトル glVertexAttrib3f( 15, 0.0f, -1.0f, 0.0f );//従法線ベクトル glTexCoord2f( 0.0f, 0.0f ); glVertex3f( -1.0f, 1.0f, 0.0f ); glTexCoord2f( 0.0f, 1.0f ); glVertex3f( -1.0f, -1.0f, 0.0f ); glTexCoord2f( 1.0f, 1.0f ); glVertex3f( 1.0f, -1.0f, 0.0f ); glTexCoord2f( 1.0f, 0.0f ); glVertex3f( 1.0f, 1.0f, 0.0f ); glEnd(); } bump- end(); //バッファの切り替え glutSwapBuffers(); } //更新 void idle() { //回転角度の更新 angle += 1.0f; //ワールド行列の更新 Matrix4 translate, scale, rotate; translate.setTranslate( Vector3( 0.0f, 0.0f, 0.0f ) ); scale.setScale( Vector3( 2.0f, 2.0f, 2.0f ) ); rotate.setRotateY( angle ); World = translate * scale * rotate; //パラメータの設定 bump- setParameter( "world", World ); //再描画 glutPostRedisplay(); } //キー状態 void key( unsigned char state, int x, int y ) { switch( state ){ //エスケープが押されたら終了 case \033 delete bump; exit( 0 ); break; } } 実行結果は以下のようになると思います。
https://w.atwiki.jp/virtualmarket/pages/53.html
VRChat 全般 アバター関連 ブース関連 バーチャルマーケット 全般 ワールド 出展物について Unity 全般 VRChat全般 アバター制作 ワールド制作 建物の大きさ アニメーション テクスチャ シェーダ 入稿ルール関連 A. ブース作成環境規定 C. Scene内階層形式規定 D. ブース規定 F. Component規定 ペデスタルアバター規定 ソフトウェア Blender 出力 モデリング テクスチャ・UV その他 Substance Painter テクスチャ・UV その他 その他 VRChat VRChatの仕様に関するもの。Vケット出展者・参加者・非参加者を問わず発生する可能性のある疑問点などを記載。 全般 インターネットブラウザからVRChatをデスクトップモードで起動したいです。 A1.VRデバイスのUSB接続を取り外しましょう。 A2.外部ソフトウェアに頼りましょう。https //booth.pm/ja/items/1337219 A3.起動batファイルを拡張しましょう。http //vrcprog.hatenablog.jp/entry/mywork-alternative-launch-bat アバター関連 デスクトップモードでの直立時、屈んだ状態になってしまうのですが、ボーンの設定で直りますか? A1.身長に対して腕が長いと視点を下げた時足が曲がりやすくて、逆に腕が短いと上を向いたとき足が曲がりやすい、という症例があるようです。 A2.参考 http //ygr.jpn.org/index.php?%E3%83%95%E3%83%AB%E3%83%9C%E3%83%87%E3%82%A3%E3%83%88%E3%83%A9%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0 向って左側の足だけ何故か地面に少し埋まります。 Avatar DescriptorのDefault Animation Setが「Male」の場合、Idle(Stand)で右足が埋まる症例があるようです。 ブース関連 プレイヤーの当たり判定の大きさが知りたいです。 https //vrcworld.wiki.fc2.com/wiki/Player より、プレイヤーはアバターの大きさに関係なく「水平0.400[m] 以下あるいは垂直 1.650[m] 以下になると通れない。」とのことです。 バーチャルマーケット バーチャルマーケットの運営や規約に関する疑問点などを記載。 全般 委託する人はワールド下見できますか? 可能です。 【サークル先行入場規約】 ・出展サークルのメンバーに対してのみ、Req InviteへのAcceptを許可します。その場合、必ず入場規約をメンバーに対して伝えてください。 ・「出展サークルのメンバー」には委託者も含まれます。 ブースの配置はいつ頃発表されますか? 入稿締切の後となるようです。 ワールド リアルタイムライトはありますか? あります。 出展物について 各ワールドのテーマに沿ったものじゃないと展示しちゃいけないとかってありますか? 出展者の自由でしょう。 Vケットのブースモデルに自作シェーダーは使用しても良いのでしょうか? 可能です。 Unity 制作するうえでの疑問点など。製作者が対応できるものを記載。 (製作者が対応できないものに関してはVRChatの項目に記載) 全般 Animationのカーブにsin波を使いたいです。 Keyを増やすしかないようです。 VRChat全般 アバター制作 アイトラッキングを実装したところ、なぜか勝手にLipSyncが動きます。 A1.VRChatではシェイプキーの上4つを瞬き扱いするので、それが動作していると思います。 A2.ダミーのシェイプキーを作ってベースの下四つに移動しましょう。ただ、頂点移動のない(もしくは小さすぎる)キーは消えてしまうので、見えないところを動かすシェイプキーを用意してください。 アバターがしゃがめません。 指のボーンが3本以上必要です。 ワールド制作 見えない壁を設置したいです。 Box Colliderの設置で可能です。 目視では4x4x5m^3に収まっていますが、入稿ツールのチェックに通りません。 A1.モデルの原点とUnityのTransform位置を見直してください。 A2.オブジェクトを選択すると白い直方体が表示されると思いますので、Skinned Mesh RendererのBoundsを調整して範囲内に収めてください。 建物の大きさ アバターが部屋の中には入れるのですが、出ようとすると当たり判定が発生して出られないことがあります。 https //vrcworld.wiki.fc2.com/wiki/Player より、「垂直方向については 2.0[m]以下になると引っ掛かりがあり移動速度が落ちる。」とのことです。 ブースの入り口の高さはどの位良い? A1.大体1.5mが平均身長と考えられるのでそれに合わせる。Unityちゃんの身長を基準にする。 A2.入り口の上のほうの当たり判定を無くす ブースに展示台を設ける場合、どれくらいの高さに設定していますか? A1.publicアバターのユニティちゃんを想定します。 A2.高身長と低身長の両方を想定します。 アニメーション アニメーションの作り方を教えてください。 こちらを参考にしてみてはどうでしょうか: ・http //keiki002.com/vr/vrchat-gen/ ・http //keiki002.com/vr/move_anime/ テクスチャ VRChat/Panosphereでパノラマ画像の境界部分に白い線が視えます。 テクスチャのwrap mode設定をclampにすると直るかもしれません。 Generate Lightmap UVをしたにも関わらず、ライトベイク結果でUVが重なっているような現象に陥って居ますが、次の解決策は何でしょうか? Vケット入稿用ライトマップについてを参照してください。 シェーダ サーフェスの奥に空間があるようなマテリアルって、どう実装しているんでしょうか(例 異世界マルシェのテントの奥の鏡) A1.奥行き系は視差マッピングとかインテリアマッピングとか、視差を利用したシェーダーを使っていると思います。 A2.シェーダーにVRC_Panoramaを使うと360度立体写真が貼れます。VRChat内で、パノラマのカメラで画像を作ることもできます。 厚みのない額縁の中にキャラモデルが配置されてるように見えているのは別の物でしょうか? ステンシルマスク等だと思います。 LightProbeが「ある地点での光の当たり方をベイクして、オブジェクトに映す」…というざっくりした認識はあるのですが、このときShaderはLightmap対応である必要はあります? A1.shaderがライトプローブを参照する際はライトマップは使いません。"環境光(球面調和)を取るコード"が入っているかどうかというところになります。 A2.ReflectionProbeを使いましょう。 入稿ルール関連 A. ブース作成環境規定 「サークルID」とは? (交付前)バーチャルマーケット運営より発行されます。交付を待ちましょう。 (交付後)マイページにて「出展者ID」として表示されているものです。 C. Scene内階層形式規定 Scene内階層形式規定の「Static設定(子オブジェクト含む)」は階層下のGameObjectに適用されますか? されません。 Static設定時「階層下のGameObjectに一括適用するか」確認ダイアログが出るのでYesを選択しましょう。 ブース全体をAnimationさせますが、Dynamicフォルダにいれた場合Lightmapの挙動はどうなりますか? 最終的に運営が全部焼き直すので、Bakeしてからstaticを外して入稿しても、影消えます。 アニメーションするオブジェクトはLightmap焼かないで下さい。 D. ブース規定 オブジェクトAとBがあったとして、AとBに個別のマテリアル1個と、どちらにも共通のマテリアル1個がある場合の総数のカウントは3個で正しいですか? 正しいです。 モデルに埋め込まれたマテリアル(Remapped Materialsの数)は「マテリアル数」にカウントされますか? されません。 ブース規定の「ワールドアップロード時のサイズ 10MB以内」はどうやって確認すればいいですか? A1.SceneにVRCWorld prefabを追加してNew WorldでPublishした後、VRChat公式サイトにログインしWorlds→My worlds→(PublishしたブースのWorld名)→World名の真下に容量が表示され確認できます。 A2.参考 https //github.com/Kozu-vr/VketBoothValidator/wiki 容量軽減対策にテクスチャ枚数抑えるといいよ!と聞きますが、具体例としてどのサイズのテクスチャを何枚くらい使いました? 「容量」は解像度と情報量に比例します。(4Kでも白一色なら容量は小さくなります) テクスチャ圧縮を推奨。(テクスチャに対しUse Crunch Compressionにチェックを入れてApply) テクスチャのAtlas化はMaterial数の10個制限とSetPass calls数の入稿ルールに対応する意味で有効です。 F. Component規定 配布prefab PickupObjectSyncにトリガー「OnPickupUseDown」を追加したいです。 何かアクション実行したいならPickupのVRC_TriggerのOnPickupUseDownにアクションを追加すれば良さそうです。 ブースの装飾にパーティクルは使えますか? 使用可能ComponentにParticle Systemの記載があるため、SetPass calls数をクリアすれば問題ないとの認識です。不安なら問い合わせましょう。 Vケットのブース上で「動画」を再生する方法は無いでしょうか? A1.入稿ルールの利用可能コンポーネントを見た限りでは、動画を再生できるようなものは見当たりません。 A2.一度、運営にも問い合わせをしてみてください。 ペデスタルアバター規定 ペデスタルアバターにDynamic Boneの制限はありますが、Clothは好きなだけ使ってよいでしょうか? Vケット3時点では無制限ですが、Dynamic Boneのペデスタル制限と同様パフォーマンスランクMediumとなる頂点数100以内とするのが無難である認識です。 ソフトウェア 製作ソフトを利用する上で発生した質問や疑問点などを記載。 Blender 出力 FBX出力したデータをUnityで読み込んだところボーンが意図しない配置になりました ボーンを編集モードにしてアーマーチュア ボーンロール ロールのクリアを試してみてください。 FBX出力時のシェイプキーについて、頂点移動が無視されている部分があります。 出力するときのスケール設定を「すべてFBX」で出すと良いようです。 (補足) 小さいシェイプキーのずれが無視されるのはUnityの仕様です。デフォルトでScale100になってるのはその回避のためです。 モデリング blenderのスカルプトモードで加工したオブジェクトをブラシとして使う方法はありますか? A1.スカルプトモードではない+ひと手間要りますが、一応出来ました 1.カーブを生成 2.平面メッシュにモディファイア[配列複製]と[カーブ(1のカーブを指定)]を付与 3.ブラシにしたいオブジェクトを2の平面メッシュに親子付け 4.2の平面メッシュのオブジェクトタブより[インスタンス化] 5.面にカーブを描く(DrawCurve) [参考リンク] Blender 2.78 Draw Curve https //www.youtube.com/watch?v=AZ5odPJhWio Blender でパスに沿ってオブジェクト(テキスト)を配置する https //dskjal.com/blender/attach-object-to-path.html https //twitter.com/CaptainAyakashi/status/1144419720373817344 A2.鱗などの場合はパーティクルの方が向いている場合がある。(https //togetter.com/li/1116241) ストローク形状で良いならカーブで出来るが、量が多くなると管理しにくい可能性がある。 A3.カーブでウロコを作る記事(http //3dprinterand.me/place-objects-along-the-path/) A4.ディスプレイスメントでベイクしたものをブラシのテクスチャとして使うことも可能。ただ、重ねると段差ができてしまうのでパーティクルの方がやりやすい可能性もある。 テクスチャ・UV ライトの陰影をメインテクスチャに反映する方法はありますか? 「アンビエントオクルージョン」をベイクするとよいでしょう。 参考 https //twitter.com/i/moments/1038428517711507456 サンプル数を上げることでより美麗な影を出力できます。ただしPCの負荷が向上します。 テクスチャペイントできないメッシュが存在します。 重複頂点があったためのようです。(質問者自己解決) UVとテクスチャを一つに統合するような機能blenderにありませんか? 「Material Combiner」で可能です。 テクスチャペイント時、選択したUVのみを塗りたい。 ペイントマスク用の面選択モードを有効にしてみてください。 その他 「Local QRCode addon」ってblender2.8しか対応してないアドオンなんでしょうか? 2.8用なので2.79では使用できないです。 Substance Painter テクスチャ・UV サブスタのベイクで、シームの切れ目をきれいにできなくて困ってます。 シームの位置を変えましょう。 サブスタを使ってブースのテクスチャーを作っているのですが、エクスポート時に作られる○○MetallicSmoothness.pngやノーマルマップはアトラスする方法があったりするのでしょうか?それともそもそも使っちゃいけなかったりします? 2Dviewという「レンダリング画面に見えてるやつをそのまままるっと1枚のテクスチャにする」出力があるのでそれ使うのオススメです NormalmapやMetallicを別途使用するのと違って、リアルタイムに見え方が変化するような形にはならないんですが、テクスチャ枚数をまとめた上でそれなりの見え方が保証されるので便利。 ここで大事なのが、出力される2DviewTexは、レンダリング画面のEnvironment Mapによる環境光の色や、Environment Exposureの明度調整の影響も受けるという点。 EMはPanoramaでいいと思いますが、Exposureは0.3~0.5ぐらいまで上げてやらないとたぶん暗めに出てしまうので注意 その他 サブスタンスのシェアの素材を使った場合、ライセンス表記が必要ですか? CC-BYライセンスですので表記が必要です。 その他 販売物の規約は何を参考に書いていますか? 利用規約ジェネレーターを使用するとよいのではないでしょうか。https //twitter.com/japan_ralway/status/1134686160830074880 ブースに「このワードで検索してね」的なものを入れようかなと思っているのですが、万国共通的な言い回しとか表現ってありますかね?虫眼鏡のマークと検索欄でそれっぽく出来るかなとも思ったんですが…。 A1.海外のピクトグラムとかのサイト見る限り、検索系はやっぱり虫眼鏡が多い気がします A2.検索ワードを置いてさらにQRコードは置くと良い(検索ワードは場合によっては検索しても出ない可能性がある。対してQRコードは確実に商品ページに繋がるため) A3.短縮URLを置く。タグの有効活用。独自のドメインなど pixiv Boothのイベントで「バーチャルマーケット3」はどうすれば登録できますか? 前回(Vket2)は結構直前に登録できるようになりました。ゆっくり待っていれば登録できるようになるはず。 (イベントはタグとは違い個人ユーザーが勝手に増やすことはできないので、待つしかない) 小物のモデルを販売する場合Unityのファイルの方がいいんでしょうか?OBJとかFBXとかで売っても良いものなのでしょうか? 小物等にはUnity上での細かい設定等無いのでFBXやOBJで問題は無いです。
https://w.atwiki.jp/zbrush-doukoukai/pages/19.html
9月15日 岩のキャラクタが課題ということで、少し前に考えていたキャラを調整して岩っぽくしてみました。 とりあえず、作成に当たって大まかなイメージを用意しました。 スフィアを適当に引き伸ばして形を作った後、リメッシュオールを掛けて割りを均一にしました。 その後、割をmayaで微調整してインポート。 ポリゴン数は眼球を抜いて3114ポリゴンです。 (Mayaとの行き来には、Gozプラグインを使用すると楽です。余裕があれば、説明や導入のしかたなどを書きたいと思います) サブディビジョンレベルを2にして、大まかなディティールを起しました。 その後、サブディビジョンレベルを5程度まであげて、起伏の細かな調整を行いました。 テクスチャはUVmasterで展開し、ZAppLinkで上下左右から適当なマテリアルの質感を焼付けました。 Multi Map Exporterでカラーマップ、キャビティーマップ(スペキュラ)、オクルージョンマップ、ノーマルマップを出力しました。 フォトショップでカラーにオクルージョンを調整して合わせ、トーンカーブなどでスペキュラの調整を行いました。 なお、テクスチャ展開からマップ出力までは3.4時間ほどでできました。 (ZAppLinkでベースの質感を書き込むのは非常に便利だと思います。 こちらも分からない方がいれば、説明ページでも作成したいと思います) ZAppLinkで調整出力したカラーを重ねた状態のZシーンデータです。 出力したテクスチャです。 元modelに出力したテクスチャを適用してみたものです。 出力したものを、元のサブディビジョン1と2のmodelに適用してみたものです。 あまり差がありませんね。 まだ作成途中なので、内容が進んだらまた報告します。
https://w.atwiki.jp/23939121/pages/24.html
3Dグラフィックの仕様について とりあえず現時点(2010/6/21)で分かっている仕様をまとめておきます。 ファイルフォーマット 3DデータのフォーマットはMicrosoft DirectXの標準形式であるXファイル形式とします。バイナリ出力でも構いませんが、デバッグ等の効率化のため出来るだけアスキー形式で出力して下さい。モデルに使用したテクスチャの画像ファイルも一つにまとめて、ZIPファイルに圧縮してアップロードして下さい。 縮尺 サイズの縮尺については、マップチップの一辺の長さを1.0とします。ただ、これはモデリング時は自分のやりやすい縮尺で作って、Xファイルへエクスポートする時に調整して下さっても構いません。 アルファブレンド 頂点カラーやテクスチャのアルファ値についてですが、3Dグラフィックについては基本的に255(完全に透過しない値)を使用して下さい。というのも、現在のDirectXの3DのレンダリングシステムではZバッファとアルファブレンドが干渉するため、アルファブレンドのレンダリングの扱いが難しいためです。現時点では、アルファ値を使用できるのは爆発や炎などのエフェクト効果に使用するテクスチャに限定させていただきます。ただ、どうしても使いたい箇所があれば相談して下さい。 ポリゴン数など ゲーム向け外付けGPUを想定すれば1キャラあたり1万ポリゴンくらいは楽に使えそうですが、オンボードGPUでの動作も考慮すると多くて5,000ポリゴン、できれば2,000~3,000ポリゴンに抑えた方がいいかもしれません。(実際にはテクスチャの数やサイズ等も影響するのでポリゴン数は目安です)ただ、主人公などの主要キャラには多めのポリゴン数を割いて、小さいキャラや目立たないキャラは少ないポリゴン数にして均衡を保つという方法はありそうです。マップチップの草や木に関しても、1つのマップ上に大量に配置されることを考慮すると、1チップあたり多くとも100ポリゴンくらいが目安です。 3Dモデルのアニメーション アニメーションについては、ボーンを含むフレーム単位のスキンメッシュアニメーションを使います。頂点ブレンディングも使えます。歩く、攻撃する、ガッツポーズを決める、などのそれぞれのアニメーションをxファイルの中に定義して下さい。後は、プログラム側からそれぞれのアニメーションを必要に応じて呼び出したり合成したりします。モデル単位の平行移動はプログラム側で行いますので、例えば歩くアニメーションの場合は動きは歩いているけれど同じ場所から進まない、というアニメーションを作っていただくことになります。 ステージ上の水面について 現在、水が流れているように見せる2Dアニメーションテクスチャを貼り付ける方法が挙がっていますが、川が折れ曲がる事も考慮するとテクスチャの種類がかなり増えてしまいます。そこで、プログラム側でポリゴンを水のように動かして水面を動かす方法も検討しています。ただ、CPU負荷が高くなる恐れもあるので、ある程度実験が必要です。(コンフィグで水面の精度を調整できるように作るなどの方法もあります) 主に戦闘中の爆発などのエフェクト効果について 基本的に、2Dのアニメーションテクスチャをビルボード(常にカメラの方を向く)ポリゴンに貼り付ける手法を使います。ただ、例えば青いレーザーのようなものが弧を描いて敵へ飛んでいくなど動的なポリゴンの生成を行うパターンやライティングをいじるパターンなども考えられますので、企画・仕様がある程度まとまってきた段階で、企画・グラフィッカー・プログラマの間で話し合いたいと思います。 プログラマブルシェーダについて シェーダを使うと、グラフィックチップの中のプログラムを直接的にいじることでより効果的で多彩なエフェクトが使えますので、現在検討中です。しかし、グラフィックチップの種類によって未対応であったり対応していても負荷が高すぎるケースもありますので、シェーダOFFでもゲームプレイに支障をきたさない範囲での使用が前提となります。
https://w.atwiki.jp/rs2c/pages/59.html
ワタクシなりのプラグイン製作手順を書いてみます。 0.忘れちゃいけないこと 1.図面からポリゴンを起こす 2.ポリゴンからテクスチャを描く 3.ディティールアップをする 4.使っているテクニックa.ナイフ2か所切断 拡大 頂点をそろえる b.レイヤーを使った段差の描き方 c.ポリゴンから影のグラデーションを作る 0.忘れちゃいけないこと 正直に書きます。プラグイン製作というのは、面倒なものです。 実際に作ろうと考えてから、調査して、時に取材もして、資料が一通り揃ったらポリゴン作って… ポリゴンできたら今度は構文を…と。 はじめて作る人には、確実に敷居の高いものだと思われます。 でも、数多くの壁を乗り越えてプラグインを作れるようになった人も多数居ます。 "諦めないという心" 本気で作るなら、これが一番大事かもしれません。 作れるようになったら、面倒で大変な全ての作業も、だんだんと楽しくなってゆくものです。 1.図面からポリゴンを起こす まず、資料を集めるというのが第一関門ですが、これについては書きません。 私の場合は、最近は図面の有無で製作に入るか否かが決まります。仮に無くても、似た車両の図面で代用することもあります。 以前は異なった寸法基準としていましたが、現在は私も数多くの作者の方と同じように、メタセコ上で 1m=50 として作っています。完成時には、0.02倍でxファイルに出力してしまいます。 このとき、まず実際にポリゴンとするデータ(車両の外観と、ドアの凹み)を作り、その後窓も図面通りに起こします。 この窓等は仮なので、作業完了後にすぐ消せるように作っています。 当然、このまま窓として内装付きで作ってもいいのですが、私は製作方針上内装までは仕上げません。 2.ポリゴンからテクスチャを描く ここで、一旦ポリゴン作業から離れ、基礎となるテクスチャを描いていきます。 まず先ほど1.で作成したポリゴンを、真横や真正面からPrintScreenで撮影をします(面・辺は表示する)。 このとき、私はテクスチャの精度を増すために大きく撮って合成する事もあります。 そしてその撮影したデータから、ドアや窓の分割線をはっきりさせて原型を描き、その後ラインカラーや窓を描きます。 ただこの段階でも実車のイメージを掴み辛いため、あくまでも仮です。 3.ディティールアップをする この辺りから、本格的にポリゴンとテクスチャの平行作業に入ります。 まず、前面形状や屋根のRなど、実際にテクスチャを貼ってみると、意外と違和感に気づきやすいものです。 実車の図面と多少違っても、ここで自己流のアレンジを加えることもしばしばあります。 そしてポリゴンが多少実車に近づいたら、今度はそのレベル以上までにテクスチャも進化させます。 色は仮のものから実際に用いるものに、ラインカラーをしっかり配置し、曲線があるならばアンチエイリアスを加える、 ドアには凹凸と光の加減を考えながらグラデーションを加える…など。 そうしてゆくと、また今度はポリゴンも更に手を加えてゆきます。手すり、スカート、アンテナ類の追加など。 そしてまたテクスチャを…と、この繰り返しです。 4.使っているテクニック と言いましても、多分私は人並みかそれ以下程度の技術(メタセコの使い方)しかないと思います。 そんな中でも、私なりに「これを使えれば時短になるんじゃね?」というものを紹介してみます。 a.ナイフ2か所切断 拡大 頂点をそろえる 例えばアンテナなどで、同じ形状で上下の大きさが変化するものがあります。これを作る時には、まずベースとなる図形を作り、 その下半分程度をナイフで切断、その切断箇所の上も並行して切断します。なお、私は出来るだけナイフは90°で切断するように しています。案外フリーハンドでも簡単に直角で切る事は簡単なんですよ。 そして最初に切断した箇所~図形の下部を選択し、そこを拡大します。そして段差に直角を出したい時には、拡大後にナイフ切断 箇所の座標(上下の段差ならY座標)を統一してしまえばいいわけです。 いちいち大きさの違う図形2つを地道に面貼りするのは面倒ですからね。 b.レイヤーを使った段差の描き方 ドアの凹みや突起物などは、流石にペイントではなくレイヤーの使えるソフトを使います。私はPictBearを用います。 まず、ペイントで簡単にベースとなる輪郭線を描きます。これは見やすければどんな色でもOK。後の作業で消します。 次にそれをPictBearなどのレイヤー作成機能を持ったソフトで開きます。 以下、凹んだ箇所を例として書きます。 まず新規レイヤーをひとつ作り、基本の輪郭線の左右に沿って黒い線を描きます。そして描画を「乗算」としておきます。 そしてまた新規レイヤーを作成。今度は輪郭線の上に沿って黒い線を描き、また「乗算」にします。 また新規レイヤーを作成し、白い線を輪郭線の下に沿って描きます。そしてこれは「スクリーン」に設定します。 この時点で、レイヤーは基礎となる背景と線のレイヤー3つの計4つとなっています。 次に、基礎となる輪郭線を背景から消してしまいます。どんな方法でもいいですが、レイヤーを最下部にあるであろう 背景に選択し、輪郭線周りの色を取って塗りつぶすのが一番でしょう。 そしてここからが本番です。まず最初に作った左右のレイヤーを選択し、透明度を調節してゆきます。具体的な数値は描きません。 これは人の所感もそうですし、車体色によっても大きく左右されるためです。 そして2つ目に作った上のレイヤーも同様に透明度を調節しますが、このとき左右のレイヤーよりも色が濃くなるようにします。 そして最後に下部の白線レイヤーも、透明にしてゆきます。目安は「両サイドの影を殺さなくて、かつ基本よりも明るい」です。 分かりづらいですが、これは実車を観察していると感覚が分かるかもしれません。 そして必要に応じて各レイヤーの透明度操作を用いて濃淡を調節していって、一番自然だと思ったら完成。全てのレイヤーを結合します。 このとき背景以外のレイヤーだけを透過処理を消さないようにして1つにまとめてレイヤーを保存してしまえば、カラーバリエーション などが出来たときに使える基礎レイヤーが作れます。 そして背景も含めて結合したら、一応完成…ですが、絶対に違和感があるはずです。例えば角が殆ど直角であったり、ただぼんやり と影みたいなものがなんとなくあるだけであったり。こういった部分を最終的に調節してやればいいのです。 c.ポリゴンから影のグラデーションを作る 車体に貼るテクスチャは、最終的には影のグラデーションを描きこんで立体感を強調しますが、これをポリゴンから抽出してしまいます。 まず車体をメタセコで開きます。心配ならばバックアップをした方がいいです。 次に真側面視点にし、全ての材質(=テクスチャなど)を消してしまいます。すると車体が真っ白になりますよね。 そしてメタセコの光の向きを真上からちょっと強めくらいにします。目安は「グラデーションを殺さずに色が濃い範囲」です。 そしてそれをPrtScrnキーで画像として、保存します。 作製された画像から余計な余白などを削ってできるだけ車体に部分だけを残すようにします。 あとはこの画像のコントラストを強め、白い個所がだいたい真白になるように明るさを調節すればほぼ完成です。 このとき側面テクスチャと同じサイズになるように作らないと大変になりますので、必要に応じてリサイズもします。 また前面~側面など、あると返って不自然になる箇所も地味に白で塗りつぶしてしまいましょう。 実際に使う時には、側面テクスチャの上にレイヤーとして貼り重ね、乗算処理をして透明度を調節してやればOK。 断面形状が複雑な車両ほど威力を発揮してくれるはずです。
https://w.atwiki.jp/saisu101net/pages/14.html
第1回はPAK FA(T-50)の製作記です。 PAK FA(T-50)は、ロシアの第5世代ステルス戦闘機で、 一部はアメリカ軍のF-22に似ている部分もありながら、 Su-27などのデザインを継承したため、 外見が非常に美しいといわれています。 大きさはF-22より一回り大きめ。 平べったい機体と大きなエンジンが特徴です。 制作に使用するモデリングソフトは「Metasequoia」です。 ダウンロードは下記のURLで出来ます↓ http //www.metaseq.net/metaseq/ その1 ~図面を入手~ このサイトで3面図をダウンロード出来ます↓ http //www.hitechweb.genezis.eu/fightersSF04.htm その2 ~図面から、機体制作~ まず、Metasequoiaを起動し、 ダウンロードした3面図を1000x1000で平面オブジェクト化します。 その後、真ん中に機体を組めるように、組み合わせます。 簡単そうなエンジンから作ります。 テクスチャを半透明(透明度を0.5に設定)にし、図面に合わせて、変形させいていきます。 新しく色を作ります。金属部分ですので、反射しやすいようにして光沢を出します。 また、縦や横の位置にも合わせます。 エンジン噴射部は面を中に押し込み、奥に別の紅を張り付け、炎を再現します。 次は翼です。 こちらもエンジンと作り方はほぼ同じです。 翼全体を範囲指定し、[選択部処理]から[麺の鏡像を作成]で、反対側も作ります。 その後、中心線を範囲指定し、[オブジェクト]から[近接する頂点をくっつける]で、隙間をなくしましょう。 高さなどを調整します。 胴体部作りを始めます。 こちらも図面を見ながら、形を整えていきます。 吸気口を作ります。 角を少し丸めるとリアルに近づきます。 胴体や翼と合わせながら、位置や形を調整します。 尾部を四角形から作ります。 直感的に大きさを決め、作ります。 断面などを調整しながら、テクスチャの透過を解除し、見た目を確認します。 カナード翼と水平尾翼を制作します。 あえて主翼とは別部品とします。 テクスチャ作りをします。 レンダリング機能を活用するといいでしょう。 テクスチャなどを合わせ、調整します。 最後に、垂直尾翼を取り付けます。 テクスチャの光具合などの微調整をしたり、 オブジェクト名などを書き込めば、完成です。 このような感じです。 あえて点数をつけるなら、60点くらいでしょうか。 コクピット部分の表現がうまくできませんでした。 データはこちらにあります。