月別アーカイブ: 2012年4月

UIScrollViewを使ってちゃんとスクロールさせる手順

達成した事があったにもかかわらずちょっとハマってしまったのできちんとメモって二度轍しないようにするための記事。

UIScrollViewを扱うにあたって最低限しておかなければ成らない事

  • 3重の入れ子構造にする
    • Window
      • UIScrollView
        • contentView
          • 実際に見せたいView群

やる事

  1. UIScrollViewを生成
  2. ScrollViewの上に乗せるコンテンツのViewを生成
  3. ScrollViewにaddSubViewでコンテンツのViewを乗せる。
  4. ScrollViewに必要なビューを乗せたいだけ沢山乗せる(載せる)。
  5. ScrollViewの可動域を指定する。
  6. 現在のViewにはUIScrollViewを上書きする。

サンプルコード

– (void)loadView
{
[super loadView];

UIScrollView* scv = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 520)];     //1
scv.scrollEnabled = YES;//4のいちぶ
scv.backgroundColor = [UIColor redColor];

UIView* mainView = [[UIView alloc]initWithFrame:CGRectMake(0,0,320, 7000)];//2
mainView.backgroundColor = [UIColor yellowColor];
//整形用の値
float margineX = 5.0;
float margineY = 5.0;
float buttonWith = 310.0;
float buttonHeight = 70.0;
float margine = 5.0;
float titleHeight = 200.0;

UILabel* titleImage = [[UILabel alloc]initWithFrame:CGRectMake(0,0,320,titleHeight)];
titleImage.backgroundColor = [UIColor blueColor];
titleImage.text = [[NSString alloc]initWithString:@”Title”];
titleImage.textColor = [UIColor whiteColor];
titleImage.font = [[UIFont alloc]fontWithSize:32];
[mainView addSubview:titleImage];//3,4

margine += titleHeight + margineY;

UIButton* btnCamera = [self makeButton:CGRectMake(margineX, margine,buttonWith,buttonHeight) text:@”Camera” tag:BTN_CAMERA];
[mainView addSubview:btnCamera];//3,4

margine += buttonHeight + margineY;

UIButton* btnPhoto = [self makeButton:CGRectMake(margineX,margine,buttonWith,buttonHeight) text:@”Photo” tag:BTN_READ];
[mainView addSubview:btnPhoto];//3,4

margine += buttonHeight + margineY;

UIButton* btnSaved = [self makeButton:CGRectMake(margineX,margine,buttonWith,buttonHeight) text:@”saved” tag:BTN_WRITE];
[mainView addSubview:btnSaved];//3,4

margine += buttonHeight + margineY;

UIButton* btnGraph = [self makeButton:CGRectMake(margineX,margine,buttonWith,buttonHeight) text:@”Graph” tag:BTN_WRITE];
[mainView addSubview:btnGraph];//3,4

margine += buttonHeight + margineY;

[scv setContentSize:CGSizeMake(320.0, 500.0)];//5
[scv addSubview:mainView];
self.view = scv;//6

}

margineの部分の処理はBlockにした方が美しいよね…。

参考

図入りで説明されてて分かりやすいし、ズームのさせ方まで載ってるので勉強になった。
テン*シー*シー:http://ameblo.jp/xcc/entry-10322378932.html

[Blender]事始めのチュートリアル動画まとめ

Blenderを触り始めたものの、どうも操作周りが気持ち悪くて色々調べてたらビデオチュートリアル(日本語)を発見した。

1:Blender入門講座|導入編|Macユーザの方へ

/tmp/というディレクトリ指定は全部//(CurrentDirectory)に変更しましょう。という話。

File -> Save User Settings (Ctrl + S)

これでユーザ設定として保存されるので次回起動以降も設定が保持され、毎度設定しなくてもよくなる。

2:Blender入門講座|導入編|初心者の方へ-1 キー操作

よく分け分からなくなる原因になるキー

Tabキー

EditModeに切り替わるキー。
他のObjectを選択できなくなる。
TabkeyによるEditModeとObjectModeの変更に気をつける。

/キー

他のものが消えてなくなる。
ローカルモード。
もう一度押すと戻る。

Hキー

触ると選択中の物体を消す。
Hideの意。
Alt + Hで戻る。
EditModeでもMeshの一部を選択してHキーを押すと選択部分だけ消える。

Zキー

画面のプレビューモードの切り換え。
Zを押すとワイヤーフレームモード(面非表示)に切り替わる。
もう一度押すとソリッドモード(面表示)に戻る。

トラックパッド

動画では解説されてないので補足。
トラックパッドで二本指で上下にスワイプ(ドラッグではなくスワイプ。シャー!シャー!って勢いつけるやつ)をするとカメラが拡大縮小をする。
この操作は何故か微調整できない。というかする方法が分からない。
そしてAnimationのタイムフレームまでも一緒に移動するし、仕様がコンフリクトしてるまま実装したとしか思えない様な有様…。どうしてこうなった。回避策は?!

※この後で判明するんだけど、上下スワイプはマウスホイール回転と同じ判定だった。

3:Blender入門講座|基礎編|ユーザーセッティング

ユーザセッティング保存まわりに関する注意等。

変なユーザセッティングをしてしまった場合は初期設定に戻す。
File -> Load Factory Settings
を選択すると工場出荷時に戻されるので再度保存しておきましょう。

4:Blender入門講座|導入編|ノートPCの方へ

Ten-keyが無い人/マウスの中ボタン無い人用の設定。

動画では10キーの設定だけだったので捕捉。
3ButtonMouseエミュレート時の内容は以下の通り。

[TABLE=2]

いずれにせよマウスがボタン式でないとやりずらいし、上で書いた様に不具合的な動きをするのでやってられなくなる。

Save as Defaultをクリックして設定を初期設定として保存しておく。

5:Viewまわりの操作 キーボード操作編

ten key で操作。

1:X軸から
3:Y軸から
5:perspective / 平行投影
0:でカメラビュー。
+拡大
-縮小

Home:全体が見える位置に戻る。

マウスの”位置”でアクティブなウィンドウが切り替わる。
マウスカーソルがへんな範囲は行ってると変更がかからない。

6:Viewまわりの操作 マウス操作編

マウスのボタンは3つ必要、という話。

マウス操作は中スクロールができないとダメ。
Homeキーはフルキーボードにしか付いてないのでBlenderそのものがフルキーボード操作向き。
家にはiMacでワイヤレスのアルミキーボード+マジックトラックパッドで外ではMBAという僕の環境には合致するポイントが一切無い操作系です。本当にありがとうございました。

最後に

横にあったWinに接続していたMX518を引っこ抜いてMBAに接続してみると…

あり得ない程快適に…。いいじゃんBlender!ぬるぬるじゃん!

結論:素直にマウスを買いましょう。

そしてもう一個MX518を購入しようと思ったらもう作られてない。
なので後継機と言われているこの機種を購入する。


ついでに書籍のリンクを張る。

[Uniyt]ShootAndDrop

先日作ってみたものを公開します。

今回作るにあたっての目標は以下の通り。

  1. スクリプトをC#で書く。
  2. 完了したらWebプレイヤー向けとして公開する。
  3. 2の理由によりマウスオペレーション前提。
  4. 記号的な物体のみで作成する。
  5. モデルはメタセコイアを使う。

でした。
メタセコイアはMac上でMikuinstaller経由で動作してます。
FBXプラグインを入れたのでUnityでも直ぐ読み込めます。

ただ、こういったものを作りまくってノウハウやデータの蓄積は大事だなと。
そして公開するという一つの区切りは、通過儀礼的な役割として非常に重要なメンタルエネルギー源になりますね。

影おちない非プロなので見栄え良くするにはシェーダいじるしか無い様で、勉強する事が常に山積みです。

—-

三宅陽一郎氏がAIに関する記事を書いたとか。楽しみにしています。