iPhoneアプリ開発:AR 目次

 

 なんか再発の疑いとか言われたし〜

 来年3月に手術の予定。

 

 とりま、アーム本体とチューブ部分の製作。

 先にアーム本体を作って、それからチューブ取り付けます。

 

 

 アームは、ARで最終的に組み上げた時(「見た目が大事」ね)は、上のような位置や角度になるわけだが…

 ローカル空間(SceneKitでいうモデル空間)では、こんな感じっす。

 


 ARKitというかSceneKitでの、SNNodeにおけるtranslationやeulerAnglesプロパティは、このローカル空間の原点を対象に行われるんで、編集モードで原点に対して、形状をどうモデリングをするかで、なにかと使い勝手が変わってくるわけですな。

 アームの回転軸にしたいな、ってところに原点が来るように形状をモデリングしたわけっす。

 

 アームの先っぽなんかにローカル空間の原点が来るように形状をモデリングしちゃうと、eulerAngles指定時に、とんでもないとこを軸にして回転しちゃうからね。

 

 

 ローカル空間原点のズレは、最悪、pivotプロパティで調整すりゃいいんだけど、モデリング時点で気をつけるに越したことはないわけですよ。

 ここら辺、何話してるかワケワカメな人は「仮想体を置いてみる」〜「露骨なアニメ」あたりから出直してこーい。

 

 実際にアームのローカル空間での状態をみたい人は、オブジェクトモードでアームを選んで3Dビューのボトムバーから、オブジェクト>クリア>位置オブジェクト>クリア>回転とやれば親側での変形がクリアされます。

 アームを選んでる状態で、プロパティビューのオブジェクトタブ、もしくは3Dビューのプロパティパネル出してトランスフォーム項目に直接0を入力でも可。

 

ローカルとグローバルの原点が一致したので、めり込み〜

 

 グローバルでのトランスフォーム(transform:変形)を一時的に無効にして編集する、てなことできないのかね?まあ、Blenderでの回転中心は、グローバル、ローカル、選択中の頂点群の中心とか、いろいろ切り替えられるんで、それほど困らんわけだが…、やれるのかやれないのか、今の所わかりません。

 

 というわけで、この形状を作るために、まずはオブジェクトモードで立方体を追加。アウトライナービューの項目名見たら察しがつくと思うけど、アーム本体は、立方体を伸ばして変形してます。

 最終形は、次のように0.5m x 0.3m x 2.7mくらいなんで、それくらいの直方体になるように調整してちょ。

 

だいたいこんな感じ

 

 私は、オブジェクトモードのまま、3Dビューのプロパティパネルで寸法入力。そのあと、3Dビューのボトムバーのオブジェクト>適用>拡大縮小で適用してから編集モードに入りました。

 適用の意味がわからん人は「お気楽極楽Blender[6] 数値で解決」ね。

注意)最初アーム作ってる時は、大きさとか超テキトーで作ったんですけどね。縮めたり伸ばしたり、色々試行錯誤しながらね。今回は、すでにある何かを自分でも作るって時のお勉強を兼ねて、大きさ決めてやってます。

 

このあと適用して、拡大縮小は1.0に戻させるようにね

 

 ちなみに上の画面は平行投影状態の3Dビュー。

 視点から近い遠いに関係なく同じ長さなら、同じ長さで表示するモードっす。設計図っぽい。

透視投影/平行投影

 3Dビューのボトムバーからビュー>透視投影/平行投影で、透視投影と平行投影を切り替えます。慣れたらショートカットの5キー打ちで切り替えましょう。

 

 

 

 平行投影にすると、奥行きに関係なく大きさが同じになるので平行とか垂直を把握しやすい。まあ好みの問題なんですがね。

 

 あと、今回のアームのモデリングは、視線をy軸に沿わせた正面からの視点、いわゆる正面図(front view:フロントビュー)で作業すると全体の形状が把握しやすいっす。

正面図の表示

 正面図への切り替えはボトムバーからビュー>前を選べばいいんだけど、ショートカットなら1キー打ち一発で切り替わります。ここらへんは覚えて積極的に使うことで作業効率上がります。

 

 この正面から見た長方形の、以下の赤線入れてる3箇所に頂点を追加した上で、各頂点を移動させてアームの形状にしたわけですよ。

 

 感覚的に言えば、てっぺん部分の面に折れ目入れて尖らせるわけ。

 

 

 ただ、正面から見れば長方形だけど、実態は直方体(6面体)なんで、裏側の面にも頂点の追加が必要。でもって裏面の頂点と結んだ線で面も分割する必要がある。

 で、こういった、辺への頂点追加や面の分割をどうやってやるかなんだけど…

 「お気楽極楽Blender[1]インツーザ3D後編」でやったような原始的(primitive:プリミティブ)な方法だと、一度、頂点を足したい辺を削除してから、中間あたりに頂点を追加、改めて頂点同士を結んで2つの辺を追加、その他、とばっちりで消えた面を貼り直し…

 

 

 なんてことになるわけだけど、そこをどう効率化するかってのが3Dモデラーの課題なわけですよ。

 で、いよいよツールシェルフのツールタブの出番てことになります。

ツールシェルフのツールタブ

 ツールシェルフのツールタブには、3D形状の編集に使えるいろんなツール群が用意されてんですな。

 

 ボトムバーからメニューで呼び出せるもんもあるし、呼び出せないものもある。

細分化

 例えば、上の書いたように、辺の途中に頂点を追加したい場合は、まず辺選択状態で頂点を追加したい辺を選ぶ(もしくは頂点選択状態で2点の頂点を選んで選択)

 

 

 その状態で「細分化」てのをクリックすることで、選ばれた辺が2つに分割されます。ワンチャンあるので2つじゃなく3つとかの分割もできる。

 

 

 で、今回なら面を分割したいんで、同じことを面でやるわけなんだけど〜

 


 面だと四分割されちゃうんだよね〜

 

 

 

 選んでる面が3角形か、4角形かでも、分割のされ方が変わるみたい。5角形以上は対応しない感じ。面を複数選択した場合も面ごとに分割が発生する。そこんとこは各自で色々試してみてください。

 便利だけど、今回の目的には合わないんだよね。

 次行ってみよ〜。

二等分

 二等分は、上と同じように辺や面を選択した状態でクリックすると、選ばれてる辺や面を、どの位置で2等分したいかを聞いてきます。

 

 

 3Dビュー上で左クリックとドラッグで線を引いて示せって言われるので、分割したいところで切り込みを左ボタンクリック&ドラッグで入れる。

 

 

 ほぼ、ほぼ、求めてた機能っすわ。

 同じ機能で、もうちょっと自由度が増すのがナイフ。

ナイフ

 こっちは、事前に面や辺を選ぶ必要はないっす。

 まずツールシェルフにある「ナイフ」項目をクリック。

 そうすっとナイフモードになるんで、あとは3Dビューボトムバーの説明に沿って作業っす。

 

 その説明によると、左クリックしたところから、ナイフを振り回す軌道が始まって、左クリックするたびに軌道修正できる。で、ナイフの軌道に当たる面や辺が切られていくという…

 

 

 最終的にenterキー打ちもしくはスペースキー打ちで確定させて終了。

 終了時には、最後の左クリック地点までの軌道に触れる面には切り込みが入り、辺には頂点が追加される。

 例えば、上の軌道の「今、ここ」のとこで、左クリックして軌道修正かけずに確定させるとこうなる。

 

 

 とまあ、かなり自由度高いツールっす。

 キャンセルしたい場合は、escキー打ち右クリックね。


 ナイフモード中は、カーソルを辺の上に持っていくと、カーソル形状が変わるんで、そこで左クリックすると、辺の上にきっちり切り込みが入る(周りの面に切り込みがはみ出ない)ようになってるんで、そこらへん気をつけて左クリックしていけば、かなり狙った通りに切り刻めます。

 

カーソルが重なった辺が光って、今、クリックすると

ちょうど辺の上で切れ込み入れられるよって合図してくれる

 

 他にナイフモード中にcontrolキーを押すと、押してる間は、辺の中間しかナイフの軌道が通れなくなる制約をかけたりもできる。

 色々各自で試してみてちょ。

 

 ま〜、これが一番使えそうっすな。

 ただし、二等分やナイフだと軸に平行に切るのは結構むずい。

 

斜めに入っちゃったよ〜

自作自演乙的な

 

 なので、そこらへんは諦めて分割する。

 で、その後頂点を選んで整列ってことをやります。

 そこらへんは次回。