第 4 章 陰関数集合によるストロークベースのモデリングシステム 39
4.2 陰関数によるスカルプトモデリングの実現
4.2.2 ストロークを単位とする履歴管理とリターゲット処理
point-set for surface discarded point volume of a nega!ve
primi!ve
volume of func!on set
図4.2: 切削を行っている際のデータ内部状態
ンセルしたり,以前に入力したストロークを任意の状態から再び適用することが できれば,スカルプトモデリングにおける編集の利便性が更に向上すると考えた.
これを実現するために,入力時と異なる状況下でもストロークを再適用する手法 を提案する.本章では,変化した形状に対しても画面から同じストロークを入力 したとして処理すれば,ユーザーが入力したストロークに込めた意図を重視した 結果が得られると考えた.この処理のことをリターゲットと呼ぶことにする.
リターゲット処理を実現するため,1ストローク分の履歴情報にはストロークを どのカメラ位置から入力したのかも保持しておく.本章における実装では,スト ローク入力時の画面座標系における座標列と,視点位置座標,視線ベクトル,視 線に対するアップベクトルを記録することとした.この情報を基に,次の流れで リターゲット処理を行う.
• システムの画面をストロークを入力時の状態を再現したカメラワークに設定 し,編集形状を描画する.
• 画面座標系上のストローク座標からカメラの視線ベクトルに沿ってレイを飛 ばして,編集形状表面と交差した座標を得る.本章の実装においては,グラ フィクスハードウェアが備えるデプスバッファの値を参照した.
• ストロークの座標列全てに対して交差点を求め,ストロークのリターゲット を完了する.
図4.3 は画面上のストロークを入力した際に行う処理の模式図である.図4.4 に おける紫色の線は実際に画面上で入力したストロークの軌跡を表し,図 4.5 は形 状に適用した様子を表している.
view screen
view plane
stroke projec!on
edi!ng shape
図4.3: ストローク投影処理の概要
図4.4: ストローク入力の一例 図4.5: 図4.4の入力を形状に適用した様子 上記の図 4.3 で入力したストロークを,履歴操作によって形状が変化した状態 で適用する場合の処理を表したのが図 4.6 である.図 4.7 は図4.4 において入力 したストロークを状態が変化している形状に重ね合わせた様子を表し,図 4.8 は リターゲットによって形状に適用した様子を表している.
view screen
view plane
stroke projec!on (retarget)
edi!ng shape
図4.6: リターゲット処理の概要
図 4.7: 入力したストロークを変化した 形状に重ね合わせた様子
図4.8: 図4.7の入力をリターゲットにより 適用した結果