インターンシップ体験記
こんばんはぐっちーです。
本日はタイトルにもある通りインターンシップで経験したことの話をしたいと思います。
Twitterのほうでは先にお伝えしましたが今週1週間(3/25~3/29)で鎌倉にある面白法人カヤックさんのインターンシップに参加させていただきました。
私はクライアントワーク事業部に所属し、課題としてヒューマノイドモデル絡みのことをしました。(あんまりしゃべるとコンプライアンス的に危ないのでなるべく伏せさせていただきます)
1週間のざっくりとした流れとインターンシップに参加してみての感想を述べていきたいと思います。
1日目
1日目は主に課題のための下調べでした。どんな機能を盛り込めばいいか、どうすればそれを実現できるかなどについて調べました。その過程で人間の体の構造について調べたりしたこともあり、普段目にしないような分野にまで踏み入ったのである意味面白かったです。
2日目
2日目から本格的に実装に入りました。このインターンシップにて作成したソースコードは私が作成したものに関しては公開してもよいと許可が出ているので機会があれば公開するかもしれません。
ただ、一応簡単にするためにこれ以降やった作業はタスクn(nはタスク番号)といった形で記事は書かせてもらいます。
タスク1はヒューマノイドモデルの目をいじる内容だったんですが実際これが一番苦戦した内容でした。個人的Unityで内容がよくわかんないものランキングで上位に来るQuaternionにとても苦しめられました。回転をいじるときに出てくるものなんですがPositionなどとは違いベクトルではなく4元数と呼ばれるものなので扱いが若干違ったりオイラー角に直して扱うときの範囲が0~360だったりと何かと厄介者でした。
3日目
しれっと3日目に入りました。なぜかというと全部で5日間あるインターンシップの日程の中でタスクの割り振りは以下のように結果的になりました。
1日目:下調べ
2日目:タスク1
3日目:タスク1
4日目:タスク1、タスク2、タスク3
5日目:タスク3、タスク4
はい。ご覧の通りほとんどを件のタスク1もといQuaternionにやられていました。なぜそこまで苦戦したのか、それはUnityではオイラー角が0~360度の間で取り扱われることが主な原因だと思っています。人間の目は上下左右に動く範囲がある程度決まっています。左側を見るのに目玉が右側から一周回る人はいませんよね。それのために回転角を制限するのですが0度がスタートだとして負の方向に20回転すると何度になるでしょうか。答えは340度ですしかし-20度でも間違いではありません。ここが難しいところで回転できる範囲を-20~20にすると
if(angle<-20)angle=-20, if(angle>20) angle=20
みたいな処理を書いて無理やり縛ってあげればよさそうですがここでのangleはオイラー角でFloat型なのですが、先ほども書いた通りそもそも0~360で扱っているのでマイナスで表された角度が出てきません。じゃあ if(angle<340)で縛ればええやんと考えると0~20の正常な範囲も引っかかってしまい制の方向に回転すると負の方向の限界に引っ張られてしまいます。と、こんな風に何かとめんどくさいのがQuaternion界隈です。
後この日は飛び入りでしたがブレストにも参加させていただきました。自分が今まで経験とは全く違うどんどんアイデアが膨らんでいくブレストでさすがはカヤックと感じました。
4日目
よくわかりませんがこの日は異様に頭がさえてました。3日目ずっと考えても出なかった解決案が午前中の数時間で出ましたwwとりあえず基準となる位置から180を左右(上下)の境界線とします。そして0~360度で表現されている角度を諸々の計算をするときだけ-180~180に置き換えてあげると判別の処理などがいい感じに進みました。最後にまた0~360に戻してあげれば万事解決って感じでした。角度の変更は以下の式でできます
angle=(angle>180)?angle-360:angle ←0~360を-180~180に
諸々の処理
angle=(angle<0)?angle+360:angle ← -180~180を0~360に
ここまでたどり着くまでにだいぶQuaternion関係の記事を漁ったのでだいぶ成長できたと思います。
タスク1が完了した後は次のタスクへ進むわけですが割とこの辺はサクサク進みました。
タスク2,3を簡単に説明すると、2はまた目関係ですがこれはカヤックさんにあったものを1で作ったものとかみ合うようにしたというものなので詳しくは言いません。
3は呼吸に合わせて自然と動くものが体にはありますよね?それを実装しました。
5日目
最終日です。ここでは3の調整とオプションで時間があったらやってと言われていた4をこなしました。4については感情を操る感じだったのですが構想はできていたものの実装で詰まったところがあり完遂ができませんでした。
この日まで本当にあっという間で1日前に出てきて次の日に戻ってきたくらいの時間間隔でしたww
感想&まとめ
もともとがっつりとコードをかけるほど技量は持ち合わせていませんでしたがカヤックの社員の方々のアドバイスのおかげで入力値の取得方法や判別処理の方法、実現のためのちょっとした工夫など非常に勉強になりました。また、オフィスでエンジニアの一員として作業したことで社会に出た後の現場の雰囲気なども経験することができてよかったと思います。
最後に今回お世話になりました面白法人カヤックの社員の皆様本当にお世話になりました!貴重な経験をありがとうございました。
この体験記は会津大VR部のブログにも同じような内容で掲載していますのでよろしければ合わせて読んでください。
それでは今日はこの辺で(`・ω・´)