まよねーず工場

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- --:-- |スポンサー広告  

本目の自分の作品、そして3本目は…

ゲームプログラマーになってからはや三ヶ月
初任給も貰い、ちゃんと月々の収入も入っているのでようやく社会人か!という感じです。
実質インターン時代を合わせるともう1年経つんですね~
いやはや時間が経つのは早い早い…

会社で商品として出回るゲームをその1年で2本作りました。
学生時代のチーム制作品を合わせるともう3,4本はゲームを作ったことになります。

なんだか感慨深いねぇ…



今日作業用のBGMを流していて、ふと聴きたくなったのが遊戯王のoverlap
overlap



この曲を流していてジワッとくるものがもうね、
何回聞いても飽きないのです。


もう丁度4年経つのですが、4年前は東京で一人暮らしをしていたわけでして、
しかしながら高校出て間もない若造に日々の自己管理など出来るはずがなく、
僕はいつも学校を無断欠席して一人自分の部屋でニコニコ動画を浴びるように眺めるというクズっぷりな人生を送っていたとさ。




まぁそんなときいつも流してたわけですね。
当時は今よりも色々と緩かったので遊戯王本編が全部ニコニコで見れたなぁ…
今じゃ考えられない話ですよね~

そんなクズっぷりな一人暮らしだったものの、なかなか悪くもなかった。
美味しい食い物屋もたくさんあるしね、東京は。
秋葉原も行き放題、街もデカいしお茶の水は楽器店のメッカだし。
オフ会とかも楽しかったなぁ、
そうそう、ビックサイトで開催されるイベントに参加できるのもいいよね。


まぁなんだ、一人暮らしもいろいろと寂しくなったりするもんではあったが、
あれはあれで楽しかったのかなぁ、なぁ~んて今は思っちゃうね。


そんなこんなあって今はゲーム作る仕事してるんだから笑えてくるが、
人生本当に何が起こるかわからんよね~



いろいろと懐かしみながら、でも今は今で充実してるので文句なしだが、
そんな時代も自分にあったんだなぁ~
とか考えながら今日もお仕事は10時くらいまでダラダラ残り…


そんなこんなの日常
ではでは($・・)))/

スポンサーサイト

2012/07/10 00:24 |日常COMMENT(2)TRACKBACK(0)  

Unityのテクスチャはいろいろと変な仕様がある

昨日に引き続き今日もメモ

Assetに取り込んだ画像素材は初期設定ではテクスチャとして2の累乗サイズになってしまいます。
512×512とか256×128とかね。

これはInspector画面から
TextureImporterの
Texture Typeから「GUI」にしてあげることで本来のサイズとして扱われるようになります。
ピクセルの色情報の取得、セットが行いたい場合は
このTexture Typeを「Advanced」にしてあげる必要がある。

Advancedにして、Read/Write Enabledにチェックを入れることでGetPixel,SetPixelが使用可能になります。


そんなこんなのメモ情報


ではでは

2012/05/12 14:06 |未分類COMMENT(0)TRACKBACK(0)  

Unityを使ったパレット変換

現在仕事でUnityを使用しております。
画像の色違いを扱うときに色別に画像データを持つといろいろとメモリがやばくなるので
プログラム内で直接テクスチャの色をつけて生成することにしました。


GUI.Textureには
GetPixel
SetPixel
Apply
LoadImage
EncodeToPNG
といったメソッドが存在し
width
height
というプロパティが存在します。

GetPixel( x , y )でテクスチャ内のピクセルの座標(0,0なら一番左端)を指定し、
そこからカラーを持ってきます。
そしてそこのカラーに新しいカラーを入れて
SetPixel( x , y , color )にカラーのセット

最後にApply()メソッドを呼ぶことで色の変更は終了


といった感じになります。




///


/// 画像カラー情報クラス
/// どこの座標の色は何色か?という情報を持つ
///

class GraphicColor{
public int x;
public int y;
public Color color; //変換するカラー


public GraphicColor( int _x , int _y , Color _color )
{
set( _x , _y , _color );
}

public GraphicColor()
{
x = 0;
y = 0;
color = new Color();
}

public void set( int _x , int _y , Color _color )
{
x = _x;
y = _y;
color = _color;
}
}




///
/// 色彩変換を行う
///

///
public static Texture2D palletConvert( AlphaChannel alpha , Color blendColor , Texture2D texture )
{
Texture2D result = texture;
for( int i = 0 ; i < alpha.Length ; i++ ){
Color c = new Color();
c.r = alpha[i].color.r;
c.g = alpha[i].color.g;
c.b = alpha[i].color.b;
c.a = alpha[i].color.a;

c = colorBlending( blendColor.r , blendColor.g , blendColor.b , c );
result.SetPixel( alpha[i].x , alpha[i].y , c );
}

result.Apply();
return result;
}




今回はレイヤーマスクのようなものを先に読み込み、
白黒のグラデーションからパレット変換の範囲を指定するというプログラムを作る必要があったので
以下のようなクラスを作成




///
/// アルファチャンネルクラス
///

class AlphaChannel{
private Texture2D alphaChannel;
private List enableArea; //アルファ範囲

public GraphicColor this[int index]{
get{
return enableArea[index];
}
}

public int Length{
get{
return enableArea.Count;
}
}

public Texture2D getAlphaChannel{
get{
return alphaChannel;
}
}

///
/// アルファチャンネル画像を取り込む
///

///
public AlphaChannel( string fileName )
{
enableArea = new List();
alphaChannel = (Texture2D)Resources.Load( fileName );
ImportAlphaChannel();
}

///
/// チャンネル範囲を調べる
/// カラーの付いた部分はチャンネル範囲、
/// 真っ白、アルファ値ゼロは評価範囲には含まれない
///

public void ImportAlphaChannel()
{
for( int y = 0 ; y < alphaChannel.height ; y++ ){
for( int x = 0 ; x < alphaChannel.width ; x++ ){
Color pixelColor = alphaChannel.GetPixel( x , y );
Color c = new Color();
c.r = pixelColor.r;
c.g = pixelColor.g;
c.b = pixelColor.b;
c.a = pixelColor.a;

//アルファ値0とホワイトカラーはノーカウント
if( c.a == 0.0f ){
continue;
}
if( c.r == 1.0f && c.g == 1.0f && c.b == 1.0f ){
continue;
}

enableArea.Add( new GraphicColor( x , y , c ) );
}
}
}

public AlphaChannel()
{
alphaChannel = null;
enableArea = new List();
}
}




なるべく原色ベースに色変換するほうが綺麗に塗り変わるので
フォトショでいうところの色彩変換を行います。
///
/// 原色を維持しながら加算成分をブレンドします
/// 引数で渡された色 / 最大値から出された割合 * 加算成分で計算して色彩を変える
///

/// 加算成分r
/// 加算成分g
/// 加算成分b
/// 変更したいカラー
///
public static Color colorBlending( float r , float g , float b , Color color )
{
Color result = new Color();
result.r = color.r;
result.g = color.g;
result.b = color.b;
result.a = color.a;
result.r += ( color.r / 1.0f ) * r;
result.g += ( color.g / 1.0f ) * g;
result.b += ( color.b / 1.0f ) * b;

return result;
}




なお、GetPixelとSetPixelで変換したテクスチャは元に戻りません。
Project内にあるテクスチャはプログラムを終了しても塗り変わったままなので、

プログラム内で独自にリソースから持ってきたテクスチャをベースに新しいテクスチャを作成する必要があります。



///
/// テクスチャを生成する
/// Project内の画像を直接色彩変換すると元に戻らないので
/// 必ずこのクラスで生成したテクスチャを使うこと。
///

///
///
public static Texture2D BuildingTexture( Texture2D texture )
{
Texture2D result = new Texture2D( texture.width , texture.height );
byte[] texbyte = texture.EncodeToPNG();

result.LoadImage( texbyte );
return result;
}





こんな感じのプログラムにより、無事色彩変換に成功。
といった感じで今日はUnityユーザーにしかわからないネタでした




ではでは

2012/05/11 19:27 |プログラムCOMMENT(0)TRACKBACK(0)  

生存報告です

ちゃんと生きていますよ、
ここ半年近くブログを放置していたのには別に深いわけなどないのです。
強いて言うなら仕事が忙しかったから、とか?

仕事して、同人ゲーム作ってと
家でも職場でもゲーム作り三昧ヒャッホー!


ヒャッホー…







orz





いやね、ここ最近本当に忙しかったんですよ、洒落にならない^^;
仕様変更ガンガンくるし、休日出勤だし酒飲む暇ないし、気づけば卒業してるし…


あ、そうそう。
報告が遅れましたが、わたくしセンチャは無事に学校を卒業いたしました(・ω・)ノ
今月4月から立派な正社員、社会人として生きております。


仕事に関しては当初の願望通りの「ゲームを作るお仕事」です。
所謂ゲームクリエイターという職業ですね。


プログラムを書いてご飯を食べれるようになりました。


あとは、そうですねぇ…
ここ最近で報告することと言えば…

卒業したときに優等賞をいただけたということでしょうかね。


だいたいそんな感じの近況報告。
ちゃんとブログを更新できるくらいの時間は作らんとねぇ。


ではでは!

2012/05/04 22:12 |未分類COMMENT(0)TRACKBACK(0)  

新しいブログ

せんちゃのプログラマーな日々


個人的にはFC2があるのでそれで十分だと思っていたのですが、
様々な事情(主に大人な事情)からもう一つ作ることになりました。

といってもこちらは「とりあえずプログラムネタ書いておくか」程度なので
プログラムとかゲーム制作などに興味がないと面白くないとおもいます^^;

一応こちらもよろしくおねがいしますですm(_ _)m


しかしライブドアブログはいろいろと更新しやすくてラクだなぁ~とか思ったのは内緒ミ^・x・^)☆
でもHTML直書きができないのがつまらないのでFC2のが好きかも(笑)

2012/01/07 18:05 |未分類COMMENT(0)TRACKBACK(0)  

 | BLOG TOP |  NEXT»»
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。