2011年12月アーカイブ

こんにちは。開発担当のICTFです。

iPhoneで撮影した画像をそのまま画面に貼付ける処理を実装していたのですが、少し困った事がおこりました。
まず前提として、どのサイズの画像でも画面内に表示できるよう同じ縮尺で拡大縮小する機能を盛り込んでいます。

もちろんiPhoneカメラで撮影した場合も上記の処理を通過する訳ですが、そもそも同じ画面サイズで撮っているのであれば何の影響も無いと考えていました。
iPadだと確かに問題なかったのですが、iPhoneの場合問題がありました。
実機を縦にして撮影しているのですが、得られる画像は横長なんです。
iPhoneの撮影画面で見えている画像の両脇部分まで実は写真になっていたのですね。
そしてこの横長画像を画面に貼付けた場合、画像の拡大縮小機能により画面の上下に空白が生まれ、且つそもそも撮影した時とは別のイメージ(両脇の見えてなかった部分です)になってしまいます。

どうやら実機を縦にしても横長画像として取得されるのは仕様のようで、イメージ通りの画像として扱う為には加工する必要がありました。
加工の手順としては、
1.縦の画面サイズに合わせた縮尺で画像を縮小する
2.横の画面サイズに合わせて画像を切り取る
となります。
ソースは以下の通りです。

// 画像選択画面で画像が選択された

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

CGSize winSize = [[CCDirector sharedDirector] winSize];


// 画像を取得する

UIImage* image = [info objectForKey:UIImagePickerControllerEditedImage];

if (!image) {

image = [info objectForKey:UIImagePickerControllerOriginalImage];

}


// 取得した画像サイズを画面内に収まる大きさに調整する

CGImageRef imageRef = [image CGImage];

size_t w = CGImageGetWidth(imageRef);

size_t h = CGImageGetHeight(imageRef);

size_t resizeW, resizeH;


// iPhoneの撮影はかならず横長になる為、縦長基準で縮小後に横を切り取る

resizeH = winSize.height;

resizeW = w * resizeH / h;

size_t cutW = winSize.width

UIGraphicsBeginImageContext(CGSizeMake(cutW, resizeH));

[image drawInRect:CGRectMake(0, 0, cutW, resizeH)];

image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

}


後はUIImageであるimageをCCSpriteで読み込んで画面に貼付ければ、無事完了ですね。

こんにちは。開発担当のICTFです。
今回は少しハマったので、iPad上でcocos2dからUIImagePickerControllerを
表示する為の方法を書こうと思います。

UIImagePickerControllerはUIViewControllerを継承するクラスです。
大抵のサンプルコードでcocos2d上からUIViewControllerの表示は

[[[Director sharedDirector] openGLView] addSubview:viewController.view];

とすれば良いとあるのですが、UIImagePickerControllerでこれを行なった場合、SIGBARTエラーで落ちてしまいます。

iPadは画面が広いので、UIViewControllerも全画面に表示するのは無く、必要な領域に表示するべき。という考え方があるらしく、どうやらポップアップで表示する為にUIPopverControllerにUIImagePickerControllerを配置した後、UIPopverControllerを画面に置く事で実現するようです。
以下実装コードになります。

-(void) showChooseMyPic

{

CGSize winSize = [[CCDirector sharedDirector] winSize];

if (m_ImagePickerController == nil) {

// 画像選択画面の初期化

UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

if ([UIImagePickerController isSourceTypeAvailable:sourceType]) {

m_ImagePickerController = [[UIImagePickerController alloc] init];

m_ImagePickerController.delegate = self;

m_ImagePickerController.sourceType = sourceType;

m_ImagePickerController.wantsFullScreenLayout = YES;

m_UIPopoverController = [[UIPopoverController alloc] initWithContentViewController:m_ImagePickerController];

m_UIPopoverController.delegate = self;

[m_UIPopoverController setPopoverContentSize:winSize animated:NO];

}

}

// 表示

CGRect r = CGRectMake(20,20,10,10);

r.origin = [[CCDirector sharedDirector] convertToGL:r.origin];

[m_UIPopoverController presentPopoverFromRect:r inView:[[CCDirector sharedDirector] openGLView] permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

}


// 画像選択キャンセル

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{

// PickerControll周りの解放を行なう

[self releasePicker];

}


//画像選択ポップアップの外側をタップし、画像選択画面を抜けた場合

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController

{

// PickerControll周りの解放を行なう

[self releasePicker];

}


// PickerController周りの解放

-(void) releasePicker

{

[m_ImagePickerController dismissModalViewControllerAnimated:YES];

[m_ImagePickerController.view removeFromSuperview];

[m_ImagePickerController release];

m_ImagePickerController = nil;

[m_UIPopoverController dismissPopoverAnimated:YES];

[m_UIPopoverController release];

m_UIPopoverController = nil;

}


こんにちは。開発担当のICTFです。

18面以降のプレイ動画をアップし終わりましたので、リンクを張って行きます。



ようやく日本語版の動画が終わりました。
次は海外版を作って行きます。やっぱり海外の方達にも見てもらいたいですからね。
こんにちは。開発担当のICTFです。

10〜17面のプレイ動画をアップしました。
http://www.youtube.com/watch?v=ZrBe0DaKysg
こんにちは。開発担当のICTFです。

前回のUltraStudio3Dを使った動画撮影の報告を兼ねます。
予定より早くLaCie Little Big Disk Thunderboltが届きましたので、早速撮影してみました。
この時の設定が、無圧縮(1分の撮影で8GBくらいのサイズになりました)での撮影です。
前回ガクガクだった動画は新しいHDDを使う事で滑らかな動きになりました。
しかし、音声の方が4分を超えた当たりからブツブツというような音になり、やがて無音になってしまいました。これでも書き込み速度が足りなかったようです。

他の解決策が無いかと探してみたところ、どうやら一般的にはResProなどの規格で圧縮しながら撮影するようです。
圧縮してからHDDに記録すれば転送速度もそれほど必要ないですもんね。
ということで、ResPro規格で撮影する為さらにFinal Cut Pro XとCompressorを購入しました。
インストール後にBlackMagic Media Expressを起動し環境設定を開いたところ、ResProの項目が増えていました。

ResPro+LaCie Little Big Disk Thunderboltの組み合わせでなんとか違和感の無い動画が撮れました。
以下のリンクがその動画です。


今後30面クリアあたりまでの動画を順次アップしていきますので、宜しければご覧ください。
こんにちは。開発担当のICTFです。

今日弊社初となる電子書籍を出す事ができました!
作者様、良い作品を有り難うございます。

「キララさんと落ちてきたハト」

公式サイトはこちらです。
小学生までをターゲットとした童話となっています。
PDF形式でダウンロードできますので、いろんな媒体で読めます。

販売はブクログのパブー様に委託させてもらってます。
ご購入はこちらから。

ちょっぴり切なく、とても暖かい良いお話ですので、小さなお子さん以外の方も是非読んでみて下さい!

こんにちは。開発担当のICTFです。

 

弊社第一弾のアプリとなる

防衛司令官急募!
~降り注ぐ火山弾から街を防衛するだけの簡単なお仕事です。~


が今日発売となりました!
単純なルールとお手軽価格の割には妙にハマってしまうゲームですので、ぜひ遊んでみてください!

今日から2週間限定の半額セール中です!

防衛司令官急募!公式サイト
http://ict-fractal.com/ICTF0003/index.html

こんにちは。開発担当のICTFです。

開発したゲームの動画を撮る為にUltraStudio3DをMacBookProに繋いで録画してみました。
実はUltraStudio3D自体は2週間ほど前に手に入れていたのですが、どうしてもiPadの画像がPC側に表示されず、諦め&忘れていました。
今日思い出しついでに何か状況が良くなるかと再チャレンジしてみたら、なんとすんなり画像がPCに表示されます。ちなみに何も設定は変えていません。
iPadを接続し直したらまた画面が映らなくなったりと、設定項目以外の要素で映ったり映らなかったりするようです。なかなか癖が強いというか、扱い辛いですね。

折角無事映ったので試しにプレイ動画を録画してみたのですが、画面はガクガクしているし、音楽は途切れ途切れだし、ひどい有様でした。
どうやら内蔵のHDDでは書き込みの速度が全然足りていないようです。

速いHDDが必要になりましたので、AppleStoreでLaCie Little Big Disk ThunderboltというThunderbolt対応のHDDを買ってみました。
読み書き速度は最高175MB/sとかなり高速のようです。
到着まで5週間ほど掛かりそうですが、到着次第録画してみようと思います。

こんにちは。開発担当のICTFです。

 

MovableTypeを使わせてもらってこのブログを設置しているのですが、IE9.0で本文が編集できない(本文の編集枠にフォーカスが移せない)という問題がありました。

調べてみると、どうもまだIE9.0には正式対応していないようです。

ためしにIE9.0の互換表示モードをONにしてみると、無事本文を編集できるようになりました。

互換表示モードをONにする方法ですが、IE9.0アドレスバーの右側に破れた紙のようなアイコンがあると思います。

これをクリックするとONとなります。

公式ではありますが、一開発者として技術情報や商品の開発情報なども載せていこうと考えています。

以前書いた技術情報は
にありますので、宜しければご覧ください。
Twitterボタン
Twitterブログパーツ