ヘキサ日記 Blog

 

  •            

    みなさん、こんにちは!
    ヘキサドライブ のさとうです

     

    最近、また一段と寒くなりましたね~
    寒すぎて、皮膚が痛いです

     

    さて、本日は
    クリーク・アンド・リバー社 × 学情 presents!
    『 ゲーム×IT業界フォーラム ~業界研究&インターンシップ~ 』
    についてお知らせです!

     

    ゲーム業界やIT業界を代表する企業が集う1日限定のスペシャルイベントです!
    ヘキサドライブも参加しますので、ぜひお越しください♪

     

    ↓↓↓詳細は公式ページにてご確認頂けます。
    https://www.gakujo.ne.jp/2018/events/about/game_it.html

     

    ゲームクリエイターを目指す学生のみなさん、
    会場でお会いできることを楽しみしています

     

    それではまた


  •            

    みなさんこんにちは。グリフォンです。

    今日は東京でも雪が舞うくらい寒くて冬眠したい気分です。

     

    さて今回も前回の続き「フォントのDistanceFieldTexture生成ツールをつくる」のその3です。

     

    大まかな処理の流れは以下

    フォントを1文字ずつ読み出してピクセル情報を取得

    ピクセル情報からDistance Field情報を生成

    CharacterInfoを生成

    アトラステクスチャに書き込む

    アトラステクスチャとFontSettingsを出力保存

     

     

    今回はを説明していきます。

    var srcWidth  = _BufferTexture.width;
    var srcHeight = _BufferTexture.height;
    var dstWidth  = _OutputFontTexture.width;
    var dstHeight = _OutputFontTexture.height;
    
    // 文字情報を成形
    {
        var charInfo = new CharacterInfo();
    
        // 文字のインデックスは文字コードのこと
        charInfo.index = (int)writeChar[0];
    
        // アトラステクスチャ内のUV座標を成形
        // _OutputOffsetXはアトラステクスチャのX座標
        // _OutputOffsetYはアトラステクスチャのY座標
        var x0 = (float)_OutputOffsetX / (float)dstWidth;
        var y0 = (float)_OutputOffsetY / (float)dstHeight;
        var x1 = (float)(_OutputOffsetX + srcWidth) / (float)dstWidth;
        var y1 = (float)(_OutputOffsetY + srcHeight) / (float)dstHeight;
        charInfo.uvBottomLeft  = new Vector2(x0, y0);
        charInfo.uvBottomRight = new Vector2(x1, y0);
        charInfo.uvTopLeft     = new Vector2(x0, y1);
        charInfo.uvTopRight    = new Vector2(x1, y1);
    
        // ソースの文字情報を取得
        var bearing = 0;
        CharacterInfo srcCharInfo;
        if( _TextArea.font.GetCharacterInfo((char)charInfo.index, out srcCharInfo, _TextArea.fontSize * _Param_QualityScale, _TextArea.fontStyle) ) {
            // UV座標の中で、実際の文字の領域はどこからどこまでか指定する
            // この領域が文字を描画するときに切り出される範囲となる
            charInfo.minX    = (srcCharInfo.minX / _Param_QualityScale) - _Param_PaddingLeft;   // 追加したパディング領域を補正
            charInfo.minY    = (srcCharInfo.minY / _Param_QualityScale) - _Param_PaddingTop;    // 追加したパディング領域を補正
            charInfo.maxX    = (srcCharInfo.maxX / _Param_QualityScale) + _Param_PaddingRight;  // 追加したパディング領域を補正
            charInfo.maxY    = (srcCharInfo.maxY / _Param_QualityScale) + _Param_PaddingBottom; // 追加したパディング領域を補正
            charInfo.advance = (srcCharInfo.advance / _Param_QualityScale) + (_Param_PaddingLeft + _Param_PaddingRight); // 追加したパディング領域を補正
            bearing          = (srcCharInfo.minX / _Param_QualityScale) - _Param_PaddingLeft;
        }
        else {
            charInfo.minX    = 0;
            charInfo.minY    = 0;
            charInfo.maxX    = srcWidth;
            charInfo.maxY    = srcHeight;
            charInfo.advance = srcWidth;
        }
    
        // ベアリング情報を成形
        var channel      = (BEARING_CHANNEL_TABLE[_OutputPageNo] << 8); // uvのチャンネル情報を間借りしている
        var xoffset      = (bearing + 128); // xoffset値を-128~127を0~255に変換
        charInfo.bearing = channel + xoffset;
    
        // 文字情報追加
        _OutputFontModel._chars._charInfos.Add(charInfo);
    }
    

     

    8行目でCharacterInfoを作成して情報を入れていきます。

     

    28行目で _TextArea(Textコンポーネント)から情報を取得します。

     

    31~35行目ではパディング領域(文字の周りの隙間)を計算しています。

     

    47~49行目ではベアリング値を設定しているのですが、このベアリング値に独自の情報を持たせています。

     

    ベアリングについてはこちら

     

    今回は、出力するアトラステクスチャのRGBAチャンネルを別々に使用してフォント情報を格納しています。

    DistanceFieldTexture は白黒情報なので4チャンネルを有効に使ってアトラステクスチャが大きくなるのを防いでいます。

    第2水準までのフォントで1024×1024のRGBAテクスチャ1枚に収まりました。

     

    そこで、必要な文字がどのチャンネルに入っているかという情報が必要になる訳です。

    ベアリングの上位8ビットにチャンネルのインデックス0~3を格納し、下位8ビットに元々のベアリング情報を0~255に変換して格納しています。

    本来ベアリングはマイナス値も格納できますが、下位8ビットで表現するために0~255に変換しています。

    もちろん、このフォントを描画するシェーダー側にベアリングを再変換する処理を入れておかないと、うまく描画されません。

     

    最後に52行目で、_OutputFontModel(FontModelクラス)に格納します。

     

     

    今回はここまで。以降はまた次回のお楽しみに


  • 2017年2月8日

    3Dアート

               

    こんにちは。東京デザイナーの足立です。

     

    今回の話題は、空中に絵が描ける3Dペン(のおもちゃ)です!

     

    IMG_0744

     

    こんなの。

     

    正月にうちの子供が買ってもらってたやつ。(我が子よナイスチョイス!)

     

    パッケージを見ると、いろいろなものが作れそうでテンション上がってきます。

    がこれなかなか難易度が高いようで、子供にはうまくできずバトンタッチ。

     

     

    フフフ、曲がりなりにもデザイナー。3Dでモデルを作ることには慣れてますよ?

    ドラゴンだろうがお城だろうが作って差し上げましょう!!

     

     

     

     

     

     

    ドン!

    IMG_0743

    ・・・東京タワー。

     

    い、いや、これメッチャムズいぞ!?

    これでも上手にできたほうなんだって!!

    ・・・軽くヘコむわ~

     

    とはいえ空中に描くというのはとても楽しく、描いてるときは夢中になっちゃいます。

    3Dペンに興味のある人は、まずは手軽におもちゃで試してみるってのもアリかも。

     


  •            

    最近、サッカーの練習を始めました。

    モーションデザイナーのおおみや(む)です。

     

    サッカーのドリブルってかっこいいですよね。

    実際練習してみると、フェイント技などは相手を誘い込んだり、側面に回り込んだりと、

    相手の「虚」の状態を作り出してかわす体捌きは、CQC(前回の日記はこちら)にも

    通ずるものがあります。

    格闘技の試合で1対多の状況は見ることは出来ませんが、サッカーだと見ることが

    出来るんです。

     

    本題に戻って、「投げ技を作ってみよう」ということですが、

    ゲームにおける投げ技は通常、1のボタン入力に対して、1の反応(パンチやジャンプ)

    なのに対して、それ以上のフィードバックが帰ってくる大技で、フィニッシュムーブだったり、

    フェイタリティだったり、戦況を一変させることが出来るもので、遊んでいる方は気分爽快、

    作る方としても大変ではありますが、非常に作りがいがあるものです。

     

    今回は、「レスリング」「柔道」「中国拳法」「プロレス」など、数ある投げ技の中で、

    「合気道」の投げ技のモーションを作ってみようと思います。

     

    合気道の投げ技にはどんなものがあるでしょうか?

     


    ■合気道を代表する投げ技

     

    四方投げ

    小手返し

    入り身投げ

    回転投げ

    天地投げ

    十字投げ

    隅落とし

    呼吸投げ

     


     

    また、相手の攻撃方法や、立ち位置によっても様々なバリエーションがあって

    とても面白いです。Youtubeで検索すると沢山出てきますので見てみてください。

     

    今回は、「入り身投げ」を作成してみました。 

     

    gris170207_2

     

    相手の体勢を崩した後、即座に側面にまわりこんで引きこんだ後、

    反対側に倒す。まるで魔法のようです!

     

    格闘ゲームだと鉄拳の 風間 飛鳥が使いますね。

     

    次回は、また違った格闘技の投げ技を作ろうかと思います。

    それではまた。

     

     

     

     


  •            

    こんにちはデサイナーのシマイです。

    今年もすでに2月!
    今年は12月ではなく24月までほしいと切実に考えています 

     

     20131203_separater

    えー、と今回用意した絵はこちら

     女子高生剣士

     

    シマイは結構昔になってしまうんですが、刀剣とかも好きでして
    日本刀の即売会とかにも何回か足を運んだことがあります。
    案内を受け取るのは簡単で、即売会は刀剣店とかでふらっと入って、
    そこで住所氏名などを書くとハガキが来ますので、
    暇なら立ち寄るとかのレベルでいけます。
    シロウトに押し売りもしない即売会だったので、自分はただのひかやし……
    いや、ちゃんと買ったら銃砲刀剣類登録証を出すつもりではいったんですよ、ホント

     

    しかし
    「ほぉ、この刀が50万……んで、こちらは70万。そこの棚にあるのは120万!
    ……正直、これら刀の価値の違いがどこにあるのかまったく分かりません
    刀の波紋か、打ち手の違いか、それとも品格か……分からないことが多すぎる。
    目利きなんて(今でも)まったくできません。
    聞いても「ほぉほぉ」とフクロウみたいに、頷くのみ……

    こちらの世界もかなり奥深いものです。
    銘入りの刀なんぞに不現を抜かすのは当分……一生無理かも

     

    20131203_separater

     

    最近インフルエンザが、周囲でも罹患の話を聞き及んでおります。
    皆さまも注意と、そして是非ご自愛いただき
    さらには少しでも疑いがある場合はお早めに医者にかかるようお気をつけください

    それではまた


  • 2017年2月3日

    2月の大イベント

               

    こんちゃーす

    おめでとう稀勢の里

    19年ぶりの日本人横綱の誕生を喜ぶ、テルマエだよ

     

    そろそろ近づいてきましたね、2月の大イベント

    めちゃくちゃ楽しみなんですよ。毎年盛り上がってる、あれ

     

    スーパーボウル

    img_0

     

    ん?違う…『バ』なに?えっ? そんなことはさておき。

     

    そもそもスーパーボウルって何なん?駄菓子屋のくじで当たる跳ねるあれ?という方

    スーパーボウルとは、アメリカ合衆国のプロアメリカンフットボールリーグ(NFL)の優勝決定戦のことです。

     

    200以上の国と地域で中継され、 特にアメリカでは毎年テレビ番組の年間最高視聴率を記録するなど、

    極めて注目度の高いコンテンツになっています(ありがとうグーグル先生)

    アメフトの魅力については、ブログで語りきれないので割愛しますが…

     

    ハーフタイムショー

    これもスーパーボウルの魅力の一つです

     

    ハーフタイムショー?跳ねるあれ?という方

    ハーフタイムショーとは、試合の前半/後半の間行われる30分程度の短いショーのことで、 スーパーボウルでは世界的に有名なアーティストによる、スーパーボウルのためだけに作られたミニコンサートが毎年開催されます

     

    あのポール・マッカートニーが「スーパーボウルでライブを頼まれるほど名誉なことはない。」と 発言するなど、

    アーティストにとっても非常に権威のある舞台となっているそうです(ありがとうグーグル先生)

     

    去年はコールドプレイ、ブルーノ・マーズ、ビヨンセの3名によるコンサートでした!

    (NFL公式動画の埋め込みが規制されていたのでURLを…)

    20160209

    https://www.youtube.com/watch?v=c9cUytejf1k

     

    今年のハーフタイムショーは『レディー・ガガ』らしいです!はたしてどんなショーになるのか!

    110711_gaga

    期待です。

     

    アメフトの試合はちょっと…という方も、世界的アーティストによる最高のエンターテインメント

    『ハーフタイムショー』だけでも、見てみてはいかがでしょうか

     

    それではまた


  •            

    「花粉シーズン突入、予想飛散量は約1.2倍」というニュースを見て、

    もう外に出たくないなぁ~なんて思い始めてます。

    こんにちは、だっちです

    花粉症の人は一刻も早く対策を始めたほうが良いですよ

     

     

    突然ですが、ゲームを作るときに必要になるデータってたくさんありますよね。

    その中でも敵とか武器とかアイテムとかのパラメーター、何で管理していますか?

    社内では、データを入力する企画の方々が使い慣れているExcelを使う事が多いです。

     

     

    今回は、Excelで作成した各種データを、

    ゲーム内で扱いやすい形に変換するためのプログラムを、

     ・ゲーム内で扱うための型を自動的に生成

     ・型を生成するための情報はExcel内に定義

    できるように、作っていこうと思います。

     

     

    Excelファイルを扱うためのライブラリは色々ありますが、

    今回は「NPOI」というライブラリをC#経由で使ってみようと思います。

     

     

    早速、NPOIを使用してExcelファイルの中身を取得していこうと思います。

    適当なExcelファイルを作成して、

    適当にC#プロジェクトを作成して、DLしてきたNPOIを参照に加えておきます。

     

     

    今回はこんな感じのExcelデータを用意しました。

    NPOITestExcelDataSample

     

     

    NPOIを使用してExcelファイルを読み込むためのコードはこんな感じ

    using System;
    using System.IO;
    using NPOI.SS.UserModel;
    
    namespace NPOITest
    {
    	class Program
    	{
    		// エントリポイント
    		public static void Main(string[] args)
    		{
    			// 入力受付
    			Console.Write("Prease input excel file path : ");
    			var srcPath = Console.ReadLine();
    
    			// ファイル存在確認
    			if( !File.Exists(srcPath) ) {
    				Console.WriteLine("file not exists.");
    				return;
    			}
    
    			// 読み込み
    			using( var fs = new FileStream(srcPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) ) {
    				var workbook = WorkbookFactory.Create(fs);
    
    				// 中にあるシートを順番に取得
    				Console.WriteLine("Sheets :");
    				foreach( ISheet sheet in workbook ) {
    					if( sheet == null ) continue;
    
    					// シート名表示
    					Console.WriteLine("	Name : " + sheet.SheetName);
    
    					// A1セルの内容を読み込み
    					// まずは行を取得
    					var row = sheet.GetRow(0);
    					if( row == null ) continue;
    
    					// 行からセルを取得
    					var cell = row.GetCell(0);
    					if( cell == null ) continue;
    
    					// セルが取得できたら表示
    					Console.WriteLine("		A1 : " + cell.ToString());
    				}
    			}
    		}
    	}
    }

     

     

    実行結果

    NPOITestExecResult001

    中にあるシートとセルに入力されている文字列が取得できていますね

     

     

    次回は、「型を生成するための情報」を定義していきたいと思います。

    ではでは~

     

     


  • 2017年2月1日

    AIの社会

               

     先日、「ローグ・ワン スターウォーズ・ストーリー」を観にいった際の

    「ダンケルク」の予告編がかっこよかったので今からとても期待しています。

    アンディです

     

     

    私が最近注目しているマンガが、

    山田胡瓜さんの「AIの遺電子」(週刊少年チャンピオン)です。

     AIの遺電子_単行本

     

    AIを搭載したヒューマノイドに”人権のようなもの”が認められ、

    同時に、生身の人間へのインプラントが一般化した世界が舞台のお話です。

     

    主人公はヒューマノイド専門の医者という、

    1巻の帯にあるとおりの「近未来版ブラック・ジャック!」な設定で、

    毎回、人間とヒューマノイドの違いから生じる

    人間とヒューマノイドそれぞれの葛藤が描かれています。

     

     

    この「AIの遺電子」のすばらしい点は、

    現在とは明らかに異なる未来的な倫理観で成り立っている社会を考察し、

    毎回異なる葛藤から現在にも当てはまる「人間とは何か」を描いているところだと思います。

     

    毎回きっちりとテーマがしかれており、

    ひとつひとつの話での問いかけもとても濃く、

    週刊連載とは思えないほどの密度です。

    現在単行本は4巻まで刊行されていますが、

    これから巻を重ねる毎に、新しい葛藤や倫理観、世界の様子や問題を見せていただけそうです

     

     

    AIブームといわれている昨今ですが、

    AI技術だけではなく、AIが普及した社会に興味がある方は

    読んでみてはいかがでしょうか


  •            

    新年明けてはや1ヵ月!

    環境にも少し変化がありましたし、新しい流行もきてます。
    時代の波に置いていかれないように……

    でも疲れないように

    自分のペースで日々精進。頑張りたいですね。

    以上ディシディアの話でした。

     

     

    こんにちは。

    最近は友達と遊ぶといえば

    「飲み屋で飲み会」または「ゲーセン」になってしまったテララです。

     

    楽しいのですが、「遊ぶ」のバリエーションが少なすぎて、なにやらマンネリ化してきました。
    そんな話を友達とした結果、「じゃあこんなんどう?」と提案されたのが
    「いい大人が、

    その場のノリと勢いで、

    全力でゲームする会」でした。

     

     

    そして、来たる1月某日お昼。
    いつもの友達四人(年齢バラバラ)が我が家に集結し、

    その会は実施されました。

     

     

    まずは。持ち寄ったWiiリモコンを使用して、

    マリオ(New スーパーマリオブラザーズ Wii)大会。
    お酒も入りつつ、盛り上がりました。

    そもそも女性のオシャレバッグから、化粧ポーチでも出すかのように
    Wiiリモコンが出てくる時点で笑える。

     

    そしてやや疲れてきたところで、Wiiを切って、PS2を起動。

    友達Aさんがクリアできなかった大神のとあるボスとの戦い方を、
    Bさんが自分のメモカを使って指南。

    それをお酒を飲みながら眺め、わいわいヤジを飛ばす。
    そもそもBさんは愛知在住。

    愛知からPS2のメモカを持ってきたという事実がもう笑える。

     

    その後、
    「こんなんもあるよ」とAさんのかばんから登場したのは、
    ニンテンドークラシックミニ ファミリーコンピュータ」~!

    Wiiマリオの時はブイブイ言わせていたアクション得意なBさんが
    マリオオープンゴルフで撃沈して大爆笑。

    全員はじめてプレイする忍者龍剣伝では珍プレイが大量に飛び出し、

    じゃあ次はこれだとアイスクライマーをはじめれば

    酔いによる覚束ない操作で

    珍プレイ(という名の殺し合い)の数々が繰り広げられる……。

     

     

    楽しい。

     

    これは楽しいぞ!

     

     

    結局夜中まで、
    ぷよテトFF15メイドインワリオバルーンファイト……

    あれやこれやと遊びまくりました

     

    「まるで小学生のようだね」なんて皆で笑っていたのですが、
    「大人だからこそ、子供のように気ままに遊べる時間は貴重で、楽しかったのだ」
    という一面もあったと思います。

     

     

    もうじき来たる、Nintendo Switch
    まさにこういったゲームの楽しみ方にフォーカスしたハードだと思います。
    非常に楽しみですね

     

     

    Switchを買ったら、また皆で
    「いい大人が、その場のノリと勢いで、全力でゲームする会」実施したいものです。

     

     

    それでは


  • 2017年1月30日

    5.6はすごくいい。

               

    こんにちは。ウッチーです。

    今回は少し前にアップデートされたSubstance Designer5.6.1の新しいフィルタをいくつかさわってみました。

     

    ●Material Blend Height

    2つのマテリアルのHeight mapを利用していい感じにblendしてくれます。

    素材(今回はSubstance DataBaseのデータを使用しました。)         

    ground_01 stone_01 

    結果

    material_height_blend

     

     

    ●Snow Cover

    マテリアルに雪を追加。パラメータで雪の量や融雪、雪の細かさなど調整できます。

    snow_cover_01 snow_cover_02

     

     

    ●Horizon Based Ambient Occlusion

    Heightやsurface sizeを設定してより精度の高いAOが作成できます。

    horizon_based_ao

     

     

    ●Height to Normal (world unit)

    こちらもHeightやsurface sizeを設定してより精度の高いnormal mapを作成できます。

    height_normal

     

     

    もっとフィルタ一つ一つパラメータの説明やら細かく書くべきかと思うんですが、長くなるのでこのへんで…

    他にもWater Level、Histogram_Scan_Non_Unform、color matchなどとても有用なフィルタがたくさん追加されたのでぜひさわってみましょう。

    では今回はこのへんでノシ


ヘキサブログ ピックアップ



過去の日記はこちら

2017年2月
« 1月    
 12345
6789101112
13141516171819
20212223242526
2728