2014年7月9日水曜日

Unity3D の回転とクオータニオンのリファレンスリンク

Unity3D (4.5.1) の回転と姿勢とクオータニオン関連の関数とか変数を、目に付いた範囲でまとめてみる。どう使うかの解説を書こうと思ったが、、、ま、次の記事で「伝わらない」記事を書こう。

視点としては、次の3視点で関連のある関数・変数をまとめた。
  • Phyxエンジンを用いた姿勢制御(Rigidbody)
  • Transformを直接変更するスタイルの姿勢制御(回転制御)
  • Vector3, Quaternionによって、状態変数の変更を行う計算関連
並びはクラスごととした。用途ごとにまとめようかとも思ったが、まずはもっとも見通しのよいスタイルにした。

回転と姿勢制御関連のリファレンス

リンク先は、UnityのScriptAPI Reference である。日本語にリンクしている。関数と変数の表記法は、C#の方式にしている。私がC#使うからである。UnityScriptとBooについては、リンク先で確認されたい。

注意点として、クラスに含まれる関数、変数を「すべて」紹介しているわけではない。省略された中にも回転制御に関連のある関数・変数はある。かもしれない。今のところ意図的に省いたのはRigidbody.AddForceだけ。他にあったらこっそり使わずに教えてくださいおねがいします

今回調査したクラス一覧

  • Rigidbodyクラス
  • Transformクラス
  • Vector3クラス
  • Quaternionクラス

Rigidbodyクラス

変数

  • AddTorque
    • void AddTorque(Vector3 torque, ForceMode mode = ForceMode.Force);
    • void AddTorque(float x, float y, float z, ForceMode mode = ForceMode.Force);
  • AddRelativeTorque
    • void AddRelativeTorque(Vector3 torque, ForceMode mode = ForceMode.Force);
    • void AddRelativeTorque(float x, float y, float z, ForceMode mode = ForceMode.Force);
  • MoveRotation
    • void MoveRotation(Quaternion rot);

Transformクラス

変数

  • LookAt
    • void LookAt(Transform target, Vector3 worldUp = Vector3.up);
    • void LookAt(Vector3 worldPosition, Vector3 worldUp = Vector3.up);
  • Rotate
    • void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
    • void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
    • void Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self);
  • RotateAround
    • void RotateAround(Vector3 point, Vector3 axis, float angle);

Vector3クラス

Static 関数

  • Angle
    • static float Angle(Vector3 from, Vector3 to);
  • Lerp
    • static Vector3 Lerp(Vector3 from, Vector3 to, float t);
  • MoveTowards
    • static Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);
  • RotateTowards
    • static Vector3 RotateTowards(Vector3 current, Vector3 target, float maxRadiansDelta, float maxMagnitudeDelta);
  • Slerp
    • static Vector3 Slerp(Vector3 from, Vector3 to, float t);
  • SmoothDamp
    • static Vector3 SmoothDamp(Vector3 current, Vector3 target, Vector3 currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

Quaternionクラス

変数

コンストラクター

関数

  • SetFromToRotation
    • void SetFromToRotation(Vector3 fromDirection, Vector3 toDirection);
  • SetLookRotation
    • void SetLookRotation(Vector3 view, Vector3 up = Vector3.up);
  • ToAngleAxis
    • void ToAngleAxis(float angle, Vector3 axis);

Static関数

  • Angle
    • static float Angle(Quaternion a, Quaternion b);
  • AngleAxis
    • static Quaternion AngleAxis(float angle, Vector3 axis);
  • Euler
    • static Quaternion Euler(float x, float y, float z);
    • static Quaternion Euler(Vector3 euler);
  • FromToRotation
    • static Quaternion FromToRotation(Vector3 fromDirection, Vector3 toDirection);
  • Lerp
    • static Quaternion Lerp(Quaternion from, Quaternion to, float t);
  • LookRotation
    • static Quaternion LookRotation(Vector3 forward, Vector3 upwards = Vector3.up);
  • RotateTowards
    • static Quaternion RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta);
  • Slerp
    • static Quaternion Slerp(Quaternion from, Quaternion to, float t);

演算子(Operators)

  • * 演算子
    • static Quaternion operator *(Quaternion lhs, Quaternion rhs);

以上である!


2014年6月25日水曜日

ブログのテンプレートを変更したのでそのメモ

今まで使っていたbloggerのテンプレートは、単に記事だけを並べるなら割とよく使えるのだが、よくよく見ると自己紹介とプロフィールがどこにあるかさっぱりわからなかった。

今回から、典型的な右情報左記事のテンプレートにしてみた。自己紹介とプロフィール、月ごとの記事一覧があるやつだ。色味はブラウン&グレイの落ち着いた感じでかえず。

あとはタグ一覧でも出すか。今のところタグ一覧があっても役立たないのでおいおい。

2014年6月16日月曜日

Unityゲーを作ってみた話

Unityでゲームを作ってみた


Unity Game Uploader 管理人の south さまに感謝

作ってみて

C#の経験はあってそこは苦にならなかった。Unityでのゲームの作り方については、いまいち探し方がわからず、結構苦労した。後々よくまとまったリンクページなどを見つけたが、、、。それはまた今度紹介する かもしれない

キャラクタの代わりにカプセルのオブジェクトを、とりあえず柱としてシリンダーを、敵の変わりにキューブを、、、となんとなくオブジェクトを並べて、動きのコーディングをするだけでゲームっぽくなるのには本当にわくわくした

キャラクタの見た目作りについては、一切放棄した。アセットストアの使い方は覚えて、Unity-Chan とフリーアセットの人型モデルの扱い方はわかったのだが、今回のゲームではプリミティブなオブジェクトのみで構成した

音は、、、さすがにまったく無しには出来なかった。プレイしてもこれっぽっちも面白くないのである、、。というわけで、効果音だけはつけることにした。ところがこれが1.5週間ぐらいを費やしてしまった。フリー効果音サイトの音から探すにしても、選ぶに選べなかったのであった。

本のご紹介


「ゲームの作り方 Unityで覚える遊びのアルゴリズム」

  • 断じて初心者向けではない。
    • C#の書き方はなんとなく知っていること
    • 実際にさわってブロック崩し(公式チュートリアル)ぐらいは試したことがあること
    • 具体的な名前がわかれば公式リファレンスを基点にやり方を調べ、考えられること
  • Unityを作ってゲームを作ってみようと思った、サンプルは試したが
    じゃあxxは具体的にどうしよう?と思った人に向く
    • マウスでものを選ぶ(パズル他)
    • 敵をロックオンする(シューティング)
    • タイミングでスコアが変わる(音ゲーてきな)
    • それ以外にも、Unityのちょっとゲーム的な使い方について勉強になることが多い
  • 慣れてくると逆にその程度のことはわかるよ!ってなる気がしてならない
    • その場合サンプルが参考になるかも。
    • 一通り完成したミニゲームの規模
    • リファレンスにはならないなあ。
  • なお、物理エンジンの利用は一般的な範囲に収まる模様
    • 移動はtransformの直接変更、velocityの直接変更で行っていることが多い

個人的に役立ったのは、シューティングのロックオン処理である。というかそれを目的にこの本を買っている。メッシュをupdate で生成だと、、、なんだと!ロックオンリストで判断、、なるほど!角度を変えて前進は変えない、、そういうことか! みたいな。

うーん、アフィリンクを張ったのはいいが、これは実物をちゃんと見ないと人を選ぶなあとか思う

2014年6月7日土曜日

せっかくなので開始宣言第04期

Unityはじめました。


はやってるらしいっすね!ぼくもやってみるっす!

でもすごく遅い上にモノを作る前に挫折する予感

ま、まあ、それはおいといて

ところでUnityな理由に関して

なんでか?
A:たまたましっていた

出来上がるゲームのクオリティは、正直そんなに印象が良くない(笑)いや、Unityは評価するし、恩恵を預かっているのだが、たまたま遊んだUnity製と喧伝されているゲームが

  • そもそもグラフィックのクオリティが高くなく、ゲームとしても作りこみが甘い
    • <= それだけ気軽にゲームを作って公開できるということで理解できる
  • Unity製ですと宣伝されていたゲームで、とてもクオリティが高いゲームを知っている
    のだが、他のゲームに比べても(同じ会社のゲームと比べても)
    メモリ使用量が著しく多い
    • <= 単に貧弱な端末を使っていただけということなのかも。
  • iPadでサンプルゲームを遊ぶが、ゲームとしてのつくり込みが甘く面白くない ハハ
    • <= どう見ても技術サンプルでした本当にありがとうございました

と、ついつい良くないイメージを先に書いてしまった。
反面で、いざ作り始めてみて

  • ゲーム開発プラットフォームの力を強く痛感する
    設定を増やして、動作を増やして、簡単なコードを書くだけで
    なんかそれっぽいう動きが出来上がる!
  • すぐうごくものが出来上がるので
    足りないところがすぐ見える
    出来たことがすぐわかる
  • WebPlayer, Platformに iOS, Androidと一通り抑えつつも
    PS3やらWiiやらにもデプロイできる。
    少なくともしばらくは最新プラットフォームへの対応をしてくれそうという期待が出来る
なにしろイテレーションが早いのが感動的。自前でゲームを作ろうとしてあっという間に挫折した経験があるので、ベースを作るより前に動くものが出来る、、、。なんかぐっと来るものがある。

経験上、あと60日ぐらいは興味の生存期間がある。その間に何かひとつぐらいは形にしたいものであると思う

第03期の期間情報メモ

2014/06/06 開始を宣言。

その間にしていたこと
「ipadを買った、ゲームにはまった」

2014年5月23日金曜日

PocketPlanesの覚書

生存報告的な場つなぎ的ないろいろやってるけどなんかまとまりきってないてきな。
最近 Unity3Dはじめてみた、面白いただ、書くほどすっきりわかってない

PocketPlanes にはまった。

飛行機会社経営シミュレーション。システムはたぶん他のゲームでもあるようなもの。とても遊びやすい。考えずにとりあえず今乗せられる客を乗せてとりあえず飛ばせば大体損しないで利益がでる。

知らない人になんとなく伝えるとこういう感じ

地図があって都市があって、飛行機は都市に止まってると。で、止まっている都市の貨物か乗客(飛行機によって運べるものが違う)を選んで飛行機に詰め込んで、そしたら行き先を選んで、飛ぶ。

そうすると、飛んだ分の費用(燃料とか)を支払って、飛行機が飛び始める。

リアルタイムで数分~1~2時間まつと、飛行機は目的地に着陸する。もし、乗客や貨物の目的地が今着陸した都市であれば、出発地で決まっていた利益分が収益になる。

収益 - 飛行コスト、が利益になると。

重要なのは「目的地が同じ場合」のボーナス。一人当たり25%増える。とても多い、というか、それ以外に額面以上になる要素がない。

入門・序盤・中盤(現在)

入門編ではとにかく数多く往復をこなすのがかぎ。中継輸送(LayOverの活用)なんて考えず、とりあえず乗せて、とりあえず飛ばす。ほんとに最初期はそもそも都市が2~3個、多くて5個とか。経路を考えるのも簡単なのでとりあえずコストと利益について考えていれば良い。

あと、貨物、乗客の出方のクセをなんとなく理解する場面でもある

CMによるBuxの収入がうれしい段階

序盤というのは飛行機を6機ほど所有し始め、都市も5~6から10所有できるようになったぐらい。のことを意識している。ゲームが若干変わる。入門段階にくらべて長距離の輸送をし始める。中継輸送をしても利益が出るんじゃないかなって考える段階。

中盤というのは、特殊パーツがもらえるイベントに参加できるようになった段階。飛行機の数が10~20の段階で、世界中を駆け巡ることが可能になった段階。正直ここら辺からが個性の出始めかと思う。単にお金を稼ぐだけでは飽きる段階で、イベントに参加することでもうちょっと遊べるかなというかんじ。ランク2、ランク3の飛行機を以下に運用するかを考え始める段階。

コストに関する考え方

中継輸送を始めると、結局どれぐらいの費用がかかってどれぐらいの損が発生したか、それの時間的コストがどれぐらいかがわからなくなってくる。

厳密に考えるなら「乗客1人、貨物1個に対してかけた時間と費用」を「オーバーレイで置き去りにするたびに」清算すればよいだろうが、、、

まあ、「逆戻りする経路はなるべく避ける」ようにすれば損は出ない。逆戻りにしても、往復でもしない限りなかなか損はしない。(ひょっとすると1.5往復ぐらいまでは利益が出ることが多いかもしれない)

現状自分は
ダッカ、カルカッタが東南アジアと中央アジア・ヨーロッパの中継点になっている(たまにデリー、カルカッタなどの10M都市にシフトする

北米・欧州間はロンドン・NYとマドリード・ボストン、ロンドン・パリがそのまま中継点。
中央アジアのハブはイスタンブール。これが心理的な負担の上ですごく楽
南米・アフリカ間はLagos-Recife。ただあんまり使わない。中距離飛行機の大西洋横断用としてはよく使う。ここのところイベント到着店がロンドン・NY・パリと北よりだったため。

2014年4月19日土曜日

iPad Air を買ってみて使ってみてそのメモ

iPadAir を買ってみたわけだ

衝動買いだったが目的はあった、そもそも普段はAndroid(しかも0円スマホ初代のIS11PTだ!)を使っているのだが、、、
  • ほぼぷよぷよアプリ専用機状態
    • 一度落とすと再起動が面倒
  • 結果的にその前に使っていた便利系アプリが骨抜き、ほぼ使わず
    • 体重記録とか
    • ToDoアプリとか
買った理由は
  • 体重記録をつけるための現在のスマホじゃないデバイスがほしかった
  • いくつかのアプリがiPhone/iPad専用だった
    • カルカソンヌのアプリ <- 主
    • 音ゲー:Jubeat, Groove coaster
    • Biplaneというゲームがある。Androidには移植されていない!
  • KindleのAndoid/iPad用アプリが出ていると聞いて
    • いくつかあるよねー、なにとかどういう分野とかはいわないけど
      電子書籍専用でしかも特定デバイスでしか見られないものとか。
  • Win8のタッチパネルあり、Androidスマホともっていて
    今メジャーであって、しかも知らない文化がiOSにあった
で、いろいろアプリを入れてみて大体感じたり使ったりこれはよさそうだったりということ
  • カルカソンヌアプリは絶対買い。CPUが賢すぎるぜーーー
    • アプリのみで1000円、拡張合計で800円だが、拡張は必須ではない
  • 音ゲーは、人のiPadでプレイさせてもらったことはあるが、自分でプレイするとうれしいものだ
    • 音ゲー好きは買いだ!金があればな!4曲500円ナリ。
  • メジャーなアプリはほぼ対応、DropBoxが自分の中で必須
    • 意外なことにSkyDrive対応アプリが多い
    • Wunderlist, EvernoteがAndroidと併用でいける
  • KindleはPCのAmazonで買ってiPad転送OKで楽チン
    • iPadから買う方法を把握していないだけとも言う
    • あと、PCからのほうが自分としては探しやすい(慣れている)し
      買いやすい(支払い用カードを登録済み)
    • 無料本も優秀である、青空文庫に入ったものはかなり入っている
    • 英語を元とした外国語の無料本ラインナップもすごい
  • 体重(というか数値)記録アプリは思ったより良いものがない
    • Daytumのウェブ版は使うのをあきらめたし、アプリもiPhone用しかない
    • 結局「Ritual」と「ネスレ体重コントロール for iPad」を利用
      • 機能を絞り込めばあることはあるという理解をした
      • ぐぐってよさげなアプリもiPhone専用でまともにうごかないケースに遭遇
    • Androidでは「KeepTrack Pro」を使っていたのだが。
  • iPadを買えばフリーで落とせる Apple純正アプリが優秀すぎる
    • Numbers, Pages, Keynote
    • iTunesU が面白い
  • メモリ管理、プロセス表示系は「ある」が「まだ良くわからない」研究中。
  • ネットワーク系もある。
    • Windows共有も出来るアプリがあるのだが、使いこなせてない!
  • 自炊趣味とあわせて使える
    • DropBoxと連携して、SideBooksが「必須レベルで便利」
    • 次点で「Zip Viewer」が全画面スライドショーが出来る。
      • しかし日本語非対応である
  • その他
    • 蔵書管理に「BookRemark」これも必携だ
    • UML作成に「Lucidchart」Chrome用もある点に注目したい
Windows, Android, iOS AppStoreと見てきての感想は
  • Androidは
    • 企業の宣伝系アプリが想像以上に多い
      • iOS系が多い
    • 全体に良質
  • Windows 8 系は
    • 出始めということで良いアプリが少ない
      • というか正直ゴミばっかり
      • 2013年8月ぐらいの情報なので、最近(2014年)は改善しているかも
    • 内部管理系アプリが多い
    • メモ帳だらけ
  • iOS AppStoreは
    • 選別が高いレベルで進んでいるが、、、
    • 実はけっこうしょぼいアプリもあり、そして有料
      • 100円、200円という金額が払ってもいいかそうでもないのか悩ましい
  • どのマーケットについても
    • デバイスの特性を生かした優良アプリが確かに存在する
      • と思っている(主観)
    • ゴミ率はWindowsがダントツ、ついでAndroid, iOS
    • 価格帯は iOSが高い、Androidは有料でもOK、Windowsは、、、
    • Windowsアプリはやはり今後に期待といえるでしょう。オレハシラナイ

2014年3月10日月曜日

JaSST 2014 Tokyo 参加したでよ

JaSST 2014 Tokyo 参加してきた

名前は知っていたレベル => 行ったことがあるレベルに昇格!

まず全体的な感想として
  • 盛況であった。会場に人が絶えずいた。
  • 顔見知り感の強い、いわばJaSST古参陣とでもいうべき人々がいる雰囲気を感じた
    • 運営メンバーと企業さんはほとんど親しい関係のようだった
    • 「わきあいあい」ああ、そうだそれだ
    • この顔見知り間は、ひとつの分野を限られた人々で極めるときの雰囲気であった
  • 講義型セッションは、参加したものすべてが最新動向の発表であった
    • 内容は理解するが、業務に生かせるかはちとわからず
  • ワークショップ型セッションに2つ参加した(BOFと「暗黙知を形式知に」)
    • 参加者のごく一部ではあったが、どういう背景の方かを知ることが出来た
  • メーヴェの人が見られて、話を聞けてそれはそれとしてよかった
私個人としてはとても得るものが多かった
  • BoFセッションが自分としては大きなブレークスルーになった
    • 後述。
  • JaSSTで語られる内容のレベルがわかった
    • 多くが「最新技術」であって「現場の悩みではない」
      • たぶん、現場の悩みと最新技術とのギャップはこれから埋まっていくもの
      • 埋めるための情報発信がJaSSTという場からあるかどうかに関しては、
        • ちょっとわからぬ
  • テスト設計コンテストの成果物を見て、固まった
    • まず一歩引いた。別世界の代物だった
      • 普段しているテストと作ったテスト仕様書はもはやおもちゃである
    • 二日目になって、眺めて、パッと見ただけではわからないと悟った
      • プレゼンポスターは濃縮度が高くて最後まで頭に入ってこなかった
      • よく考えられている、んじゃないかなという雰囲気はわかった
    • 成果物の分厚いテスト仕様書を少しだけ見て、ちょっと安心した
      • 直交表とテスト手順を見て安心する自分に気づく
      • どのみち中身を見るだけの元気は残されていなかったのだ
BOFセッションに関して。
  • 同じテーブルに着いた方はみな違う背景を持っていた
    • リーダークラスの人、担当の人
    • テスト専業の人、開発・テスト兼業の人
    • テストに対する知識あるいは知識意欲の差
    • 仕様文書があったりなかったり
  • 話してみると共通点のある悩みを抱えていた
    • テスト技術を教える方法がわからない、教わってもわからない
    • テスト自体へのモチベーションが低い
    • テスト技術を持っていると思われる人が少ない
    • 急にやれっていわれる
      • まあ、、、仕事は大体そんなものか!
そして気づいたこと。

  • テスト担当者も開発者もやることと立場は違うけれど
    「ひとつの製品の完成」に立ち会うメンバーである
    • そして日本では立場が同等とは受け止められない
      • 低い扱いのケースが多そう
        • たぶん偏見、、、たぶん、、、
  • 両者に(あるいは関係者全員に)必要なのが「製品に対する知識」である。
    • 「ドメイン知識」とか「やりたいこと」などと称される
    • 後で気づいたんだけど「仕様書」という形で文書化されることが多い
  • テスト技法も重要だけど仕様とその暗黙の知識を伝えたほうがいい感じがする
    • 技法は後で使いどころが出てきたら使えばいい

BoFセッションで同じテーブルに着いた皆さんに、一人の人間として感謝したい。テストに対する知識も経験も薄い自分としては、身近な時間の対話から得られるものがとても多かった。もやもやしたものを晴らすきっかけとなった。自分の思ったこと、感じたことを出来るだけ素直に話しただけなので、場をかき回したのではないかなとは思っている。同席した皆さんにも得られるものがあれば、と思う。

しかしまあ改めて言葉にすると「そんなこと聞いたことあるよ」である。すごいことに気づいた気がしたんだけど。これが知識が身になるということか。

あとは実践か!である。うん、参加してよかった。