Page 1

U1006 早稲田大学理工学部建築学科卒業論文         指導教授 渡辺仁史

AR( 拡張現実 ) 技術を導入した設計手法の開発と評価 Development and Evaluation of Design Process using Augmented Reality

山本 将支

Department of Architecture,School of Science and Engineering, Waseda University


AR(拡張現実)技術を導入した設計手法の開発と評価 Development and Evaluation of Design Process using Augmented Reality


はじめに

AR(拡張現実)技術を導入した設計手法の開発と評価


目次 Index

AR(拡張現実)技術を導入した設計手法の開発と評価


第一部:本編 第 1 章  背景

007

1-1

ものづくりの歴史と現在

009

1-2

AR の定義

010

1-3

AR の種類

011

1-3-1 マーカー式 AR

011

1-3-2 GPS 式 AR

012

1-3-3 マーカーレス AR

013

1-4 CAD の歴史

014

1-5 既往論文

015

1-6 位置づけ

015

第 2 章  目的

016

2-1 目的

第 3 章  研究方法

017

018

3-1 研究の流れ

020

3-2 ツールの作成

021

3-2-1 使用機材、環境

021

3-2-2 SIDE

022

3-2-2 Processing

024

3-2-4 ステレオビジョン

025

3-3 S I D E に 基 づ く イ ン タ ー フ ェ ー ス 設 計 の 指 針

026

3-4 使用風景

032

AR(拡張現実)技術を導入した設計手法の開発と評価


第 4 章  評価

034

4-1 評価実験概要

035

4-2 マーカー座標認識精度の測定

037

4-3 SIDE によるインターフェース評価

038

4-3-1 重点目標の確認と自己評価

038

4-3-2 アンケート評価

039

第 5 章  考察

042

5-1 マーカー座標認識制度に関する考察

044

5-2 SIDE によるインターフェース評価に関する考察

045

第 6 章  結論

050

6-1 まとめ

051

6-2 展望

052

謝辞

054

参考文献

055

第二部:資料編

057

1 SIDE 評価項目の定義

058

2 ソースコード

062

AR(拡張現実)技術を導入した設計手法の開発と評価


第1章

背景

Chapter 1

Introduction

1-1

ものづくりの歴史と現在

1-2

AR の定義

1-3

AR の種類 1-3-1 マーカー式 AR 1-3-2 GPS 式 AR 1-3-3 マーカーレス AR

1-4 CAD の歴史 1-5 既往論文 1-6 位置づけ


008

第1章 背景

導入

第1章 背景   本 章 で は 、ま ず 始 め に 、も の づ く り の 歴 史 と 現 在 の 状 況 に つ い て 述 べ る 。 次に AR という技術の定義を行う。さらに現在使われている AR 技術の大 ま か な 分 類 、 そ し て C A D の 歴 史 、 AR を用いた3D モデリングツールについての 既往論文と続く。その中で、本研究は AR という技術の中でどのように位 置付けられるのかを示す。

AR(拡張現実)技術を導入した設計手法の開発と評価


中世から近世までは手工業でありそのもの自体にオリジナリティ 注1) オープンソース:ソフトウェ アの著作者の権利を守りなが

がある時代であった。その後の工業化の流れ出は、図面というシス テムを画一化し、また部品を規格化させることで、生産性を向上さ

らソースコードを公開するこ

せる試みが続けられた。その結果生まれた工業化による安価で粗悪

とを可能にするソフトウェア

な大量生産品に対するアンチテーゼとして育まれたのがウィリア

の使用許諾条件を指し示す概

ム・モリスの主導したアーツ・アンド・クラフツ運動である。しか

念。

しこの運動は、万人に受け入れられる普遍的な価値を提供する事は できず、モリスが重点においた入念な手作業によるものは、コスト

注 2)

の面からも一部の上流階級の人たちしか受け入れられなかった。

デジタルファブリケーション:

 現代のコンピュータ技術の進化によってオープンソース化 注 1 )

コンピュータによって幾何的

の流れが生まれ、デジタルファブリケーション注 2 ) という概念を

な計算を行い形態を作り、そ

生み出した。モリスの時代において入念な手作業にかかったコスト

れを3D プリンター等で生産 する事

は、コンピュータによって代行されようとしている。誰でもものづ くりが可能な時代の到来を示している。  現在も既に個人向け3D プリントサービスによって、個人が CAD で作ったモデルのデータを入稿する事で自宅に造形品が届く

注 3)

サービスも生まれている。それらはまだ建築的なスケールにまでは

digital tectonics course at

至っていないが、この流れは建築も例外ではなく、既にコンクリー

carnegie mellon university

トを3D プリントする技術の研究も行われている。

の学生の作品 http://www-staff.lboro. ac.uk/ cvrab/

注 4) コンクリート3D プ リンター http://www. suckerpunchdaily.com/tag/

図 1-1-1 デジタルファブリケーション

注 3)

digital-fabrication/

図 1- 1-2 コンクリート3D プリンター

AR(拡張現実)技術を導入した設計手法の開発と評価

注 4)

ものづくりの歴史と現在

1-1 ものづくりの歴史と現在

009

第1章 背景


AR の定義

1-2 AR の定義  AR とは Augmented Reality の頭文字をとったもので日本語では 「拡張現実」と訳される。AR は VR(Virtual Reality) の派生の概念の 一つとして存在し、現実空間に対してコンピュータを用いて何らか の情報を付加する技術のことを言う。  AR 技術が広く一般に知られる用になったきっかけとして 2007 年に放映されたアニメ作品「電脳コイル」が挙げられているが注1)、 注1) 『AR の す べ て - ケ ー タ イ と ネットを変える拡張現実』日 経 BP、2009 年

研究自体は古く 1965 年のハーバード大学のアイヴァン・サザー ランド准教授が VR の研究をする際にシースルーのヘッドマウント ディスプレイを使用し、現実世界上に重ねて画像を表示させたのが AR の始まりだと言われる注 2 )。   「現実空間に情報を表示する」ことを AR の定義とするならば、 現在の我々の生活にも AR の技術は取り込まれている。

注 2) http://ascii.jp/elem/ 000/000/514/514146/ index-6.html

注 3)

図 1-2-1 サザーランド准教授の研究

注2)

図 1-2-2 自動車の HUD

注3)注 4)

HUD: 間の視野に直接情報を 映し出す手段である。この技

  

術は軍事航空分野において開

VR と MR と AR の違い

発され、さまざまな分野に応

 VR と MR(Mixed Rearity) と AR の違いは混乱されて使われてい

用されている。

ることが多く、はっきりと定義しにくい部分もあるが、VR とは、 仮想空間の中に人が入っていくことである。

注 4) フロントガラスに表示される 速度メーター

 MR とは現実世界と仮想世界を融合させることであり、プロジェ クタを用いて現実空間上に表示するものもあれば、ディスプレイ内

http://heihachi.at.webry.

に自分の身体の映像を取り込んで操作できるようにするものもあ

info/theme/eb27c8d23b.

る。その中でも特に、仮想のモデルを現実空間上に重ねあわせて表

html

示し、現実空間を拡張させるものを AR と言う。 Vitrual Reality Mixed Reality Augmented Reality Reality

図 1-2-3 VR と MR と AR の関係

AR(拡張現実)技術を導入した設計手法の開発と評価

010

第1章 背景


AR の中でマーカー式、GPS 式、マーカーレスの3種類を紹介する。

1-3-1 マーカー式 AR  現実空間の中に実際に認識の基準となる特異点やマーカーを設置 し、それをカメラで撮影することで認識させ、その入力画像の形状 によって得られる数値を元に映像に情報を付加する。 注 1) ARToolKit

 現在見られるマーカー式 AR の多くはワシントン大学の HIT 研究

http://www.hitl.washington.

室で加藤博一氏が開発した ARToolKit 注 1)ライブラリを元に作られ

edu/artoolkit/

たものである。  基本的には黒枠と白領域の比が 1:2:1 で、一辺の長さが80 mm のマーカーが用いられる。外枠の黒領域でマーカーとカメラの 距離と角度を計算し、内部の白領域の画像によってマーカーにタグ を付けることができる。それによってマーカーごとに様々な情報を 引き出せるようになり、マーカーごとに機能を割り振ることができ るようになっている。  2009 年には IKEA による iPhone ユーザー向けのサービスで、部 屋の中にマーカーを置き iPhone で撮影すると、部屋の中に実物大 の家具が置かれているように見えるアプリが登場した。 建築方面での利用は、ARmedia による CAD 用 AR プラグインがあり、 モデリングしたデータを簡単に AR マーカーに対応させることがで きることによって、プレゼンテーションの場面で利用することへの

注 2) SketchUp ARmedia 各種 CAD にプラグインとし て導入される AR ツール

期待感が高まっている。  こういった技術の受け入れが進んだことにより、今日様々なシー ンで AR マーカーを見ることができる。

http://www. inglobetechnologies.com/

注 3) IKEA で展開されるマーカー 式 AR を利用したカタログ。 マーカーをおき iPhone をか ざす事により家具が表示され る。 http://www.ideaxidea.com/ archives/2010/06/ikea_ar_ catalog.html

図 1-3-1-1 マーカー式 AR の例

AR(拡張現実)技術を導入した設計手法の開発と評価

注 2)注 3)

AR の種類>マーカー式 AR

1-3 AR の種類

011

第1章 背景


マーカー式 AR がデバイスに取り付けられたカメラ画像自体から 現実の空間への同期を行うのに対し、GPS 式 AR は、カメラから取 り込んだ画像を単に背景として利用する。GPS によって得られるデ バイス本体の位置情報および周辺情報と、デジタルコンパスやデバ イス内蔵の加速度センサーによって得られるデバイスの傾きによっ て、オブジェクト表示位置を調整し、カメラ画像の上に情報を描画 する。  マーカ式に比べ比較的演算量が少ないことや、GPS を利用した ナビゲーション利用にマッチしたことからスマートフォン用のコ ンテンツに多く利用されている。セカイカメラ ( 図 1 - 1 - 3 - 1 ) 、 Layar などが一般的に知られている。 注1) セカイカメラ カメラの映像の上に店舗情報 や、駅等の情報が表示される iPhone、 ア ン ド ロ イ ド 向 け アプリ。 http://spr-web. com/2010/01/post_3.html

注 2) iPhone アプリ「東京の地下 鉄」 。 駅の位置情報、店舗情報まで の距離や方角が表示される。

図 1-3-2-1 GPS 式 AR の例

AR(拡張現実)技術を導入した設計手法の開発と評価

注 1)注 2)

AR の種類> GPS 式 AR

1-3-2 GPS 式 AR

012

第1章 背景


注 1) Georg Klein オクスフォード大学時代に

 オックスフォード大学の Georg Klein らによって研究・開発され た PTAM(Parallel Tracking and Mapping for small AR Workspaces)

PTAM を開発。現マイクロソ

では、3D 空間の特異点を常にマッピングし続けることでマーカー

フト社員。

などの目印なしに、平面を検出することができる。 さらに、環境の特異点から平面を検出することで、初めて映す場所 でも、最初の位置から多少移動してもトラッキングを行うことがで きる。  実用レベルの速度や正確さや安定性を持っていることから次世代 の AR 技術として世界中で注目されている技術である。

注 2) PTAM http://www.robots.ox.ac. uk/ gk/PTAM/

図 1-3-3-1 マーカーレス AR の例

AR(拡張現実)技術を導入した設計手法の開発と評価

注 2)

AR の種類>マーカーレス AR

1-3-3 マーカーレス AR

013

第1章 背景


CAD と は Computer Aided Design、 も し く は Computer Aided Drawing の略で、1959 年∼ 1963 年に MIT のアイバン・サザラン ドの開発した「Sketchpad」を原型として発展した。  1965 年に米国の航空機メーカーであるロッキード社が米国国防 注1)CADAM Computer Augmented Design and       Manufacturing の頭文字を略 したもので、ロッキードが社 内用として開発した CAD

総省の後援を受け実用化した「CADAM 注1)」は、大型の汎用コン ピュータに数多くのグラフィックディスプレイを接続した CAD シ ステムで、当時の CAD システムの事実上の標準製品となっていた。 「CADAM」は、実用化以来改良を重ね現在でも航空機に限らず世界 中の製造分野で使用されている。  1970 年代から 80 年代初頭までの間には、ミニコンの登場によっ てスタンドアロン型の CAD システムが開発され始める。Bezier の 自由曲面の形状制御法、ワイヤフレーム、サーフェスモデル、ソリッ ドモデルの分類が明確化されるのもこの時期である。しかし、この ころはまだ一部の大企業内部での社内向けの研究開発が行われてい る段階であった。  1985 年、個人ユースを目的としたパソコンが登場したことに よって CAD の開発競争が激しくなる。それによって中小企業にも 手の届く範囲となり、CAD を用いた設計環境が整い始めるが、ま だかなり高価なものであった。  1995 年頃からパソコンの高機能化に伴い CAD システムの価格 も安くなってきたが、OS に依存する開発環境の変化やバブル崩壊 により、開発ベンダーの淘汰が行われた。

注 2)Sketchpad http://www.mprove. de/diplom/text/3.1.2_ sketchpad.html

図 1-4-1 Sketchpad

注 1)

AR(拡張現実)技術を導入した設計手法の開発と評価

CAD の歴史

1-4 CAD の歴史

014

第1章 背景


既往論文

1-5 既往論文 注 1) 今 村 弘 樹:ARToolKit を用いた拡張現実による3 D-CG モデリングツールのた めの一検討

 AR を用いた3D モデリングツールについての研究は、そのほと んどが ARToolKit を利用したものである。今村により行われている 研究注 1) は、AR マーカーを擬似的なマウスに見立て、AR マーカー の一部を隠すことをクリックするとして3次元入力を行うものであ る。  また、薫田らは AR マーカー上に表示したオブジェクトを移動さ

注 2)OpenCV Intel 社によって開発された オープンソースのライブラリ

せる際に OpenCV 注2)により手の形状をグー、チョキ、パーの三つ にの状態に認識させることにより、マウスなどを用いずに人間の手

であり、主に画像処理の機能

のみでオブェクトの移動をさせる研究注3)などがある。

に関連する。

 また大内らによる研究注4)は、建築における AR の可能性を広く 模索している。インテリア、エクステリア、ディテールについて AR の特性を生かした提案をしているが、原寸大でのモデリングに

注 3)薫田佳剛、田中佑樹、 小笠原将也、金知俊:拡張現 実感を用いたユーザーイン ターフェースに関する研究

焦点を当てたボリューム検討に関する研究はまだなされていない。  

1-6 位置づけ  世の中の AR に高まる技術的関心は高まっている。建築という分 野の中で AR をうまく展開する一つの手法として、作り手に使って

注 4)大内真哉、加戸啓太、 平沢岳人、安藤正雄:建築に おける複合現実感の活用に関 する研究 

もらう AR のツールについて研究する。プレゼンテーションの際に マーカーを置いてオブジェクトを見るだけではなく、設計の際に原 寸大で体を動かしながら制作物の検討を行うことに焦点を当てて考 察を行った。

ARToolKit

図 1-6-1 本研究の位置づけ

AR(拡張現実)技術を導入した設計手法の開発と評価

015

第1章 背景

AR

本研究

モデリング


第2章

目的

Chapter 2

Purpose

2-1 目的


017

第2章 目的

目的

2-1 目的  本研究は、AR 技術を用いた独自の設計ツールを作成し、AR の特 性を明らかにすることにより、設計品質の向上および設計作業の効 率化に役立てる。

AR(拡張現実)技術を導入した設計手法の開発と評価


第3章

研究方法

Chapter 3

Reserch Methods

3-1 研究の流れ 3-2 ツールの作成 3-2-1 使用機材、環境 3-2-2 SIDE 3-2-2 Processing 3-2-4 ステレオビジョン 3-3 SIDE に基づくインターフェース設計の指針 3-4 使用風景


019

第3章 研究方法

導入

第3章 研究方法

 本章では全体の研究の流れとツール制作までの流れを解説する。  3-1 では全体の研究の流れを説明する。  3-2 ではツール作成に用いた考え方や言語の解説を行う。  3-3 では SIDE に則って制作した今回のツールのためのインターフェー    ス設計の指針を示す。  

AR(拡張現実)技術を導入した設計手法の開発と評価


研究の流れ

3-1 研究の流れ

ARの事例調査

既往論文調査

・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・背景・既往調査

SIDE 注 1)

インターフェースの設定

インターフェース評価

プログラミング 機能の設定 作成、 プログラミング ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・作成

マーカー認識精度評価

・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・評価

分析考察 展望

・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・展望

図 3-1-1 研究の流れ

020

第 3 章 研究方法

注 1)SIDE:構造化ユーザインターフェース設計・評価方法

AR(拡張現実)技術を導入した設計手法の開発と評価


本項ではツール作成に用いた考え方や言語の解説を行う。

3-2-1 使用機材

以下の機材を今回のツールに使用する。 ・WEB カメラ BUFFALO 社製 BSW20KM02HBK× 2

 ・ワイヤレスマウス ELECOM 社製 M-D15URWH

OS:

Windos 7Professional

プロセッサ:

Intel(R) Core(TM)i7 CPU 860@ 2.80GHz 2.80GHz

メモリ:

4.00GB

システムの種類:64ビット OS ビデオカード: NVIDIA Ge Force GT 220

図 3-3-1-1 設置概略図

AR(拡張現実)技術を導入した設計手法の開発と評価

ツールの作成>使用機材

3-2 ツールの作成

021

第3章 研究方法


SIDE と は、 構 造 化 ユ ー ザ イ ン タ フ ェ ー ス 設 計・ 評 価 方 法 (Structured User Interface Design & Evaluation Method)の英略 であり、人間生活工学研究センターユーザーインターフェース設計 委員会がインターフェースを設計する際のガイドラインをまとめた ものである。設計の進め方のガイドと 32 の評価項目によって成り 立つ。  他の UI デザイン設計ガイドラインに比べ、以下の様な特徴を持つ。 ・UI を構築するうえで重要な設計項目とその項目に関する  活用事例のデータと、ユーザの情報処理プロセスに沿っ  て UI の設計と評価ができる。 ・UI デザインプロセスの各ステップで必要となる作業(情  報の把握、構造化、デザインおよび評価)をフォーマッ  トや所定の方法によって行うことができる。 ・設計者のスキルのレベルに対応するなど色々な使い方が  可能である。この分析的な方法により、未経験者でも  UI 構築が可能となり、経験者も事例などにより発想の  幅が広がり、検討漏れのない UI を構築できる。  具体的には UI の基本的な考えを明らかにすることに始まり、情 報の把握、情報の構造化、タスク分析、UI フローチャートの設定 を通して UI を設計する。それらに対して 32 に分類された UI 評価 項目の点数をつけることで、項目別に重要視するべき点や改善する 点を明らかにすることができる。

AR(拡張現実)技術を導入した設計手法の開発と評価

ツールの作成> SIDE

3-2-2 SIDE

022

第3章 研究方法


基本的考え方 情報の把握 情報の構造化 タスク分析 UI フローチャート 図 3-2-2-1 SIDE によるインターフェース設計の流れ

● SIDE による評価項目一覧

図 3-3-1 評価項目一覧

AR(拡張現実)技術を導入した設計手法の開発と評価

ツールの作成> SIDE

● SIDE によるインターフェース設計の流れ

023

第3章 研究方法


本研究で作成したツールは Processing 注1)という言語を用いた。 注 1) Processing http://processing.org/

 Processing とは、Ben Fry と Cassy Reas によるオープンソース プロジェクトであり、アートとビジュアルデザインに特化した言語 となっている。 使用するバージョン Processing 1.2.1

図 3-2-3-1 Processing

AR(拡張現実)技術を導入した設計手法の開発と評価

ツールの作成> Processing

3-2-3 Processing

024

第3章 研究方法


ステレオビジョンとは、2 台のカメラの視差から、物体までの距離 を測定する方法である。その概要図を示す。 (図 3 - 3 - 4 - 1 )(図 3 - 3 - 4 - 2 )

図 3-3-4-1 ステレオビジョン概念図

P(x,y,z)

XP-(d+XR) XL

XR

d-(XL-XR)

A QR f

QL

B OL

OR

d 図 3-3-4-2 ステレオビジョン幾何的説明

Xp-d

三角形 PAQR と三角形 PBOR に注目すると、相似であることから XP-(D+XR):XP- d=d:d -(XL-XR) d/XL d/YL よって XP =       Y 座標も同様に YP = XL-XR XL-XR

三角形 POLOR と三角形 PQLQR d:d -(XL-XR)= ZP:ZP- f よって ZP =

d・f XL-XR

AR(拡張現実)技術を導入した設計手法の開発と評価

ツールの作成>ステレオビジョン

3-2-4 ステレオビジョン

025

第3章 研究方法


3 - 2 - 2 で 説 明 し た 通 り 、S I D E の フ ロ ー に 則 っ て イ ン タ ー フェースの設計を行った。

■ UI の基本的考え方 テーマ

拡張現実空間における3D モデリングツールの UI 設計評価 検討範囲

 3D モデリングにおける身体的な実寸入力によるツールにおい て、瞬間的かつ感覚的にモデルを作ることができることを目標とす る。  既存の CAD に取って代わる総合的な CAD ではなく、既存の CAD になかった新しいサブツールとしての役割を期待する。重点的に検 討したい点は二つあり、一つ目は拡張現実空間上での原寸モデリン グにおける入力装置や画像表示方法の UI の検討。二つ目は、目視 での寸法判断から数値に変換する能力を補完し、感覚的に快適にモ デリングすることである。目標とするユーザ層の条件は、既存の CAD をある程度使う人で、目視からの寸法把握に限界を感じ、1/1 の模型等を作っているがその労力やコストに不満を感じている人、 1/1 スケールの検討をする機会の少ない人などを想定している。そ の機能を追及するために、余分な機能は追加せず、なるべく少ない 回数で入力、出力を行えることを目標とする。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE に基づくインターフェース設計の指針

3-3 SIDE に基づくインターフェース設 計の指針

026

第3章 研究方法


・目標の明確化

1/1 スケールでの検討を積極的に行いたいと考え ている人に対して、今までよりも簡単に評価でき るようにする。

・システムの把握

システムの把握 機能:

3D モデリング

入力デバイス: ワイヤレスマウス、赤色マー カー 使用環境:

事務所、学校などの空間。後ろ に5m程のなるべく何もない空 間があること。赤色をしたもの が背景にないこと。

使用時間:

10分∼1時間

運用システム: 個人使用 ・UI 機能の明確化

詳細なモデリングは行わない。モデリングされたオブジェ クトの配置、オブジェクトサイズの微調整。 システムは極力シンプルにし、モデリングよりも観察し評 価する時間が増えることを望む。 ・タスクの明確化

画面上でマーカーの認識を確認。 マウス操作により描画 フライオーバー等での確認作業、背景画像を見ながらのス スケール検討 DXF でのオブジェクト書き出し ・ユーザの明確化

ユーザ層の明確化 年齢:20代、30代前半 職業:建築設計業務を行い、CAD を使う人。 ・ユーザレベルの明確化

ある程度 CAD の基本知識を持ち、DXF、フライ オーバー、スナップ等の単語の意味を理解してい ること。 十分なスケール数値寸法感覚をまだ身に着けてい ない人

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE に基づくインターフェース設計の指針

■情報の把握

027

第3章 研究方法


描画方式のクリッククリック式、クリックドラッ グ式などを理解していること。 スナップの概念などを知っていること。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE に基づくインターフェース設計の指針

・ユーザのメンタルモデルの明確化

028

第3章 研究方法


情報の分類 情報の分類 拡大縮小 ツールの種類

視点の移動

視点平行移動 視点回転 曲線

描画

直線 直方体

ロード

オブジェクトファイル

サイズの決定 配置

スクリーンショット撮影 保存

DXF 書き出し ムービー録画

色調補正 設定

値調整 距離確認

図 3-3-1 構造化情報図

情報の優先順位

・UI コンセプト 直観的な操作で数値入力を行う操作は排除する。 直線よりも曲線、作りこむことよりも配置のしや すさに重点を置く。 ・ユーザリクアイメント 部屋の雰囲気がわかる。 ブレが少ない。 思い通りにモデリングできる。 ・情報の提示順序 機能が少ないことから並列型情報提示を 選択。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE に基づくインターフェース設計の指針

■情報の構造化

029

第3章 研究方法


タスク分析を行ない問題点を抽出し、解決案に変換した。

表 3-3-1 タスク分析表

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE に基づくインターフェース設計の指針

■タスク分析

030

第3章 研究方法


実際に使用される際の、ツールの使用開始から終了までの機能フ ロー図を以下に示す。

画面

色調補正 カメラ2確認モード カメラ1確認モード

NO

認識 確認 OK

描画モード

背景表示描画モード

操作

直方体描画 曲線描画 オブジェクト描画 オブジェクト移動、編集

NO

編集を終了

YES YES

保存

DXF エクスポート NO

スクリーンショット撮影 終了 図 3-3-2 機能フロー図

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE に基づくインターフェース設計の指針

■ UI フローチャート

031

第3章 研究方法


図 3-4-1 マーカー位置の確認

図 3-4-2 直方体の描画

図 3-4-3 テーブルの描画とサイズ調整

AR(拡張現実)技術を導入した設計手法の開発と評価

使用風景

3-4 使用風景

032

第3章 研究方法


第4章

評価

Chapter 4

Evaluation

4-1 評価実験概要 4-2 マーカー座標認識精度の測定 4-3 SIDE によるインターフェース評価 4-3-1 重点目標の確認と自己評価 4-3-2 アンケート評価結果


034

第 4 章 評価

導入

第4章 評価

 本章では作成したツールに対する評価を行う。  まず評価実験概要を示し、マーカーの座標認識精度の測定結果、SIDE に基づき設定し た重要設計項目の提示、評価者らによるアンケートによる評価の結果を示す。 評価に基づく考察は、次章で述べる。

AR(拡張現実)技術を導入した設計手法の開発と評価


目的:  AR 技術が応用される際の、利用法の一つとしての実寸 でのモデリング、設計検討が生まれると思われる。その際 に拡張現実ツールがどのような場面でどの程度有効である かをツールの仕様構成例を変化させることで把握し有効性 を見極める。

評価1・マーカー座標認識精度の測定  ステレオビジョンによる距離測定の制度測定した。 メインカメラ軸上の測定位置にマーカーを置き、その際のプログラ ムの認識距離を書き出した。マーカー位置を 500mm ∼ 2500mm まで 500mm 間隔で行った。また、2つのカメラ間距離を 75mm、 150mm、300mm、450mm に設定して誤差数値の測定を行った。

評価2・SIDE によるインターフェース評価  SIDE のフォーマットに則った自己評価と、実際にツールを使っ てもらった人に 5 段階評価のアンケートと機能の要望、意見など を記入してもらった。 評価者対象:

建築学科の学生 理由

・ある程度既存の CAD に対する理解があるが、   

 本格的に一つのソフトに絞っていない状況であ  るため。 ・ツールの目的として、什器等の標準的な寸法数  値を把握していな人でも直感的に大きさを決め  られる事であるため。スケールに対する理解力  を上げることも目標としている。 ・学生は設計検討をより実寸的に行う必要がある  と考えられるから。

評価者:

早稲田大学理工学部建築学科に所属する 20 代の 学生5人

AR(拡張現実)技術を導入した設計手法の開発と評価

評価実験概要

4-1 評価実験概要

035

第 4 章 評価


理由

・彩度の低い環境のほうが有利であるため。 ・蛍光灯の光により光環境が安定しているため。

スクリーン 

カメラ検知領域 



カメラ

  IN 図 4-1 評価場所平面図

AR(拡張現実)技術を導入した設計手法の開発と評価

評価実験概要

場所: 早稲田大学西早稲田キャンパス55館 S 棟8階渡辺研究室

036

第 4 章 評価


マーカー座標認識における実測値と出力値を(表 4-2-2)に示す。 表 4-2-2 精度計測結果 ȫɡɩҶԵฑ&kk' 53

/3.

1..

23.

X‫ބ‬ೱٖ‫ޒ‬রਯ

З

3..kk

/

337

33/

25.

434

0

347

3/6

3./

40.

1

4.1

3/1

3.4

411

2

331

3//

275

4.4

3

347

3.5

270

375

/

//17

/./2

/.10

//17

0

//17

/.01

771

/.75

1

///6

/..4

775

/.62

2

///6

/..4

755

/.62

3

/.75

/..4

755

/.61

/

/503

/306

/326

/4/5

0

/503

/3.7

/306

/440

1

/503

/3.7

/26.

/353

2

/553

/3.7

/26/

/4/.

3

/503

/326

/250

/402

/

0/34

0./0

0.32

0/60

0

0/34

0./0

0.24

0/34

1

0014

0./0

0.32

0/60

2

0014

/757

0.42

0/73

3

0/3.

/757

0.24

0/34

/

0522

0522

0320

0337

0

0653

1./6

03/3

0403

1

0522

0461

0320

0441

2

0522

0403

0311

04.4

3

0403

0461

03/3

0403

/...kk

/3..kk

0...kk

03..kk

߾฻ਯ

※この章の内容に関する考察は5章において行う。

AR(拡張現実)技術を導入した設計手法の開発と評価

マーカー座標認識精度の測定

4-2 マーカー座標認識精度の測定

037

第 4 章 評価


注1) Wavefront 社 の Advanced Visualizer というソフト用の

4-3-1 重点目標の確認と自己評価  ある程度 CAD の知識を持っていて、OBJ ファイル注)1 のインポー

ファイルフォーマット。

ト、DXF のエクスポート等を他の CAD で行うことができる程度の

多くのCGソフトがサポート

人を想定しているため、CAD における基本的な説明なしに行える

し、CGソフトの中間ファイ

ように設計した。既存の CAD にあるように、線を正確にスナップ

ルフォーマットとして広く使 用されている。

させて描くことよりも、楽しく、新しい形を想像することや、体の 感覚でのなんとなくの大きさを図ることを想定している。  OBJ ファイルインポート後のモデルサイズの設定では入力に対し て瞬間的に反映されるよう設計した。  また、マーカーの認識のブレが環境に作用されやすいことや、距 離が大きくなると認識の甘くなることも多くなるため、マーカーが 認識されていない際に警告音を鳴らすようにした。画面に表示させ る方式にしなかったのは、モデリング最中に画面を見ずにモデリン グをする人が多かったためである。

表 4-2-1 重点項目表

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価>重点目標の確認と自己評価

4-3 SIDE によるインターフェース評価

038

第 4 章 評価


システム設計者向けの 1 ∼3項目を除く 29 項目について被験者 に対して 5 段階の評価を行ってもらった。 ●アンケートフォーマット

  % ', 6  y i  Š r 

ŒRQX





                 



wlTSV 



                 



9?$E€



                 



9/0?#<-$= 

                 



paMSV 



                 

9 ?$   h ˆ\ 

e





                 



†\Z





                 



9?$ABXsE

                 



F‹Z

                 





K m   =) ;! %: = f t 

>K m x YO G ]



]





                 



ukX





                 



dvQcX 



                 



 @zX



                 



 dvX5+1="



                 



 JX



                 







>n {> Ib Q c M



 @‚X



                 



7=)<8-<



                 



YOP‰q_D





qso}>7+(?&

                 

|[^„j



                 

 



                 

>W ‡ `C



ƒBq^„j



                 



`CZ





                 



 `CKm 



                 



 U~



                 



 2



                 



 7)2





                 



LCNn





                 



2?.0+!



                 



4<3



                 

H …] g  ?*='



図 4-2-2 アンケートフォーム

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価>アンケート評価

4-3-2 アンケート評価

039

第 4 章 評価


記入してもらったアンケートの集計結果を(表 4-2-2)に示す。

表 4-2-2 アンケート結果表

※この章の内容に関する考察は5章において行う。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価>アンケート評価

●アンケート結果

040

第 4 章 評価


・指の動きを感知して、つまむ、のばす、曲げるなどを直  感的に行えるようにして欲しい。 ・現在右手で操作してるから、左手にもスイッチをおいて  ツール選択したい。 ・カメラを動かしたい。 ・ボリュームを削る、曲げるなどの操作がしたい。 ・四角、三角、円、球を描きたい。 ・明るさの調節がしたい。日光の表現。 ・画面上にツールのアイコンを置いて欲しい。 ・奥行きをもっと分かりやすくしたい。 ・簡単に修正できるようにして欲しい。 ・カメラが1台でできるようにして欲しい。 ・視点を動かすと、どこに描いているのかわからなくなる。 ・自分の映っている映像と、描いた図形の前後関係をきち  んととりたい。 ・右側の TOP 表示ウィンドウが遠くて見にくい。 ・GL に固定するスナップ機能を付けて欲しい。 ・作ったモデルの寸法を瞬時に分かるようにしてほしい。 ・色やテクスチャが操作できると良い。 ・照明などを配置し、現実空間に照らすことができたらよい。 ・複数人で操作したい。 ・背景画像

※この章の内容に関する考察は5章において行う。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価>アンケート評価

評価者の意見

041

第 4 章 評価


第5章

考察

Chapter 5

Discussion

5-1 マーカー座標認識制度に関する考察 5-2 SIDE によるインターフェース評価に関する考察


043

第5章 考察

導入

第 5 章 考察

 本章では 4 章の結果を受けて以下 2 つの項目についての考察を行う。  ・マーカー座標認識精度に関する考察  ・SIDE に基づき設定した重点評価項目と、ツール使用者に評価してもらったシートを   元に、インターフェースの達成度を評価する。

AR(拡張現実)技術を導入した設計手法の開発と評価


マーカー座標認識精度の測定 表から、 X 軸に測定時の距離を取り、Y 軸に(出力値 - 測定時の距離) をグラフにした。 Ykk[

4..

出力値 - 実測距離

3.. 2.. 1.. 0.. /.. .

+/..

.

3..

/...

/3..

0...

03..

Ykk[

測定時の実測距離 53kk

/3.kk

1..kk

23.kk

৔ࣞ&53kk'

৔ࣞ&/3.kk'

৔ࣞ&1..kk'

৔ࣞ&23.kk'

図 5-1-1 カメラ間距離と誤差の関係

 グラフから、距離が大きくなると誤差も大きくなることがわかった。 また、視差量が少なくなると距離が分かりにくくなることから、カ メラ間隔が大きくなるに連れ誤差の範囲が小さくなるものと予想し たが、実際には 450mm 間隔の時にも 125.4mm の誤差があった。  しかし、距離に対する誤差の上昇率はカメラ間隔に比例して大き くなることから、450mm 間隔の際の値は何らかの定数的に影響す る誤差因子が作用したと考えられる。

AR(拡張現実)技術を導入した設計手法の開発と評価

マーカー座標認識精度に関する考察

5-1 マーカー座標認識精度に関する考察

044

第5章 考察


重点評価項目に設定した箇所に着色した。 -10

-8

-6

-4

-2

0

2

4

6

8

10

12

ҒුࣵĂ߮୬ࣵ ߚ߽૷৔τ ɦĘȶǻ೑‫ن‬ ɦɋɐĘȵɫɇȶȤɳ ̓ಬϡ৔τ ќǤǢ ਅࣶҖ ޷৒ࣵѐ೑ ࢘෸Җ ޺Ǚǘȗ Ҫ‫ࣵף‬ ‫ࣵ̿ු܋׹‬ ͔ฅࣵ ɞɃɔɳȰ ‫ށ‬ೀࣵ ͔ҳࣵ ɡɳȿɫɢɇɫ ࡼ೧ǻৃർૈળԽ ૈѐǷෟ‫ل‬ĂɡɃȻĘȸ ӫϕ౿ਖǻ‫ؒה‬ ࢲ৒ૈ౿ਖǻ‫ؒה‬ আ‫܂‬Җ আ‫܂‬ǻْด Ջੴ ȢɕȩĘɀɳȹ ବ‫؎܂‬ซ ɡȿɕȡ ɕȣĘɉɐɃȯ ɘɫɗ

図 5-2-1 重点評価項目とアンケート結果

 当初重点項目に設定した 10 項目については全体的に満足のいく インターフェースを提供出来ていることがわかった。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価に関する考察

5-2 SIDE によるインターフェース評価 に関する考察

045

第5章 考察


楽しさ(10) ※ 括弧内の数字は評価得点を示す。  新しいツールに対する楽しさという点では十分な評価が得られ た。今後は継続的に使用されていく中でも楽しさの観点が失われな いようにしなければならない。 達成感(6)  一回のモデル作成の時間が短い割に生まれるモデルが多いのは従 来の2次元入力に対して3次元の方が入力情報が多いことに起因す ると思われる。十分な評価が得られたものと思われる。 主体性確保(5)  機能を絞ったことで、機能の把握までの時間は短かった。そのた め、ユーザの思い通りの操作は実現できた。 信頼感(-4)  マーカーの認識が許容範囲が狭かったことや、認識の際のブレ、 環境光に強く左右されることなどから安定した動作のシステムを構 築することが難しかった。 予期せぬ入力に対しては確認を求めるなどして対応すべきだと思わ れる。 手がかり(-4)  ユーザが何をするべきかの情報を画面上から排除したために次に 何をするのか混乱を招いてしまった。画面上に機能のアイコンを置 くことや、段階的な指示文を表示させることで解決を試みたい。 簡潔性(4)  ツールの制限を行ったことから簡潔性についても良い評価がもら えたものと思う。しかし、ヘルプの提示方法が満足のいくものでな かった。 一貫性(2)  オブジェクトの位置決定、サイズ変更の決定が右クリックである ことが評価がよくならなかった原因だと思われる。右クリックが機 能の選択、左クリックが決定と、ボタンの既存の象徴性を加味する べきであった。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価に関する考察

■低評価項目、重点評価項目に対しての考察

046

第5章 考察


ヘルプを紙面で提供したためにモニターへ注目している状態から 紙面の参照になかなか至らなかった。画面上にヘルプを表示させる ことで改善ができるものと思われる。 マッピング(-2)  カメラの認識のポイントを常にメイン画面で表示するようにして いたが、その強調が十分でなかった、もしくはその意味を直感的に 理解させるための警告メッセージやアイコンを表示させることがな かったために、誤作動、誤認識が起こることがあった。認識の精度 を上げるとともに、色やアイコンでの警告メッセージを表示するこ とで改善が望めるものと思われる。 一貫性(2)  キーボードなしで操作するために、機能別にマウスクリックを割 り当てたそのために、普段使っている「左クリックで選択、決定」、 「右クリックで拡張機能」、「中ボタンで移動、スケールの変更」等 の認識に対してずれがあるため誤操作をすることが見受けられた。 描画モードをはっきりさせることと、右クリックでの機能選択とい う UI 構造にすることで改善が図れるものと思われる。 情報の多面的提供(1)  画面上に表示する情報を極力減らしたいという目標から、画面か らのツール選択を省いたことから評価が低くなったものと思われ る。ヘルプの紙面のみではなく、口頭、ツール選択時、メイン画面 でもメタフォリカルな説明を行ないたい。 的確な用語・メッセージ(-6)  基本的に口頭での説明であり、メイン画面に情報を表示させない 方針でつくっていたため、利用者が何を行えばいいのかが理解でき なかったものと思われる。 メイン画面へのヘルプ表示を追加することで改善したい。 操作感(1)  マーカー認識が光環境や背景によって大幅に左右されることから 操作案の項目は目標しているほどの値は出なかった。 環境に対して耐性のある認識方法を目指したい。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE インターフェース評価に関する考察

一覧性(-5)

047

第5章 考察


オブジェクトのサイズ変更を、マーカー座標によってリアルタイ ムで表示を変えることで実現させようとした。  メイン画面に表示させる情報を少なくしすぎたせいで、アフォー ダンスを誘発するに至らなかったので、メイン画面の情報提示の仕 方を再考する必要があると感じた。 フィードバック(5)  マーカーのブレの検出時に警告音が出るように設定した点や、描 画しない状態でも球の表示をしたことが分かりやすかったものと考 える。

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価に関する考察

アフォーダンス(2)

048

第 5 章 考察


4-2-2 で示した評価者の要望・問題点を項目別にまとめた物が(表 5-2-1)である。 表 5-2-1 要望分類表

オブジェクトと現実の物質の前後関係の不整合の問題 奥行きの認識感が悪い問題 視点移動時にマーカー位置を見失う問題 カメラ視点を自由移動の要望

視点に関する意見

三面図表示ウィンドウが遠くて見えにくい問題。 画面上にツールのアイコン設置の要望 指の動きによる直感的な機能選択 両手での操作方式の要望

操作感に関する意見

複数人での操作の要望 明度の調節機能の要望。 オブジェクトに対する環境光の再現の要望

現実再現性に関する意見

オブジェクトと現実の物質の前後関係の不整合の問題 カメラ1台での動作の要望

システムに関する意見

GLに固定するスナップ機能の要望 色やテクスチャの編集機能の要望 ボリュームの掘削、歪める、曲げるなどの機能の要望 基本的な幾何学的形状の作成機能の要望

機能に関する意見

簡単に修正できる機能の要望 リアルタイムなモデルの寸法表示の要望

 以上の要望・問題点の表から、AR にかかわる項目を抽出し、そ の要素を取り出すと、以下の3つの傾向がある事がわかった。 ・現実の一部である体を使ったインターフェースを求める傾向 ・現実空間と仮想のオブジェクトとの差を無くしたいと思う傾向 ・現実空間場のポイントを基点に編集したいと思う傾向

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE によるインターフェース評価に関する考察

■評価者の意見からの考察

049

第 5 章 考察


第 6 章

結論

Chapter 6

Conclusion

6-1 まとめ 6-2 展望


本研究では、実環境のマーカーをカメラ 2 台によるステレオビ ジョンにより認識し、リアルタイムで描画を行うシステムを提案、 構築した。ステレオビジョンにより取得した座標にオブジェクトを 表示し、カメラ画像と重ね合わせることによって、拡張現実空間に オブジェクトを配置、書き込みできるツールとなっている。  主な機能としては、3 次元でのフリーハンド描画、ボリューム検 討のための直方体描画、OBJ ファイルの読み込みと読み込んだファ イルのサイズ変更、DXF でのエクスポートなどである。  本研究により明らかになったのは、モニタに対面して表示させる 方式の AR については分かったのは以下のことである。 ・現実の一部である体を使ったインターフェースを求める傾向がある。 ・現実空間と仮想のオブジェクトとの差を無くしたいと思う傾向がある。 ・現実空間場のポイントを基点に編集したいと思う傾向がある。

AR(拡張現実)技術を導入した設計手法の開発と評価

まとめ

6-1 まとめ

051

第 6 章 結論


052

第 6 章 結論

展望

6-2 展望  World Builder という SF 映像作品ががある。映画や CM などで 用いる視覚効果を制作しているを Bruce Branit によって作られた 短編映画であるが、この作品の中で行われるモデリング作業はまさ に未来の世界のモデリングをしめしている。  直感的なインターフェースで、原寸大のモデルを、現実と見間違 えるほどのクオリティで次々と作り出していく。一見現実性のない 単なる SF に見えるが、これらに関わる技術は着々と開発・開発が 行われており、まったくありえない世界ではない。 注 1)http://www.branitvfx. com/

図 6-2-1 World Builder

AR(拡張現実)技術を導入した設計手法の開発と評価

注 1)

5

2

6

3

7

4

8


053

第 6 章 結論

展望

 網膜投射型の HMD も各社の開発が進んでおり、今年 10 月に行 われた CEATEC JAPAN 2010 で参考出品された NTT ドコモの「AR walker」は小型で違和感のないデバイスとなり実用化が迫っている ことがわかる。さらに米国シアトルのワシントン大学ではコンタク トレンズ型のディスプレイの開発も進んでいる。 注 1)A u g m e n t e d Reality in a Contact Lens http://www.justgetthere.us/ blog/archives/AugmentedReality-in-a-Contact-Lens. html 

図 6-2-2 Augmented Reality in a Contact Lens

注 2)AR Walker http://japanese.engadget. com/2010/10/10/arwalker/

図 6-2-3 AR Walker

注 1)

注 2)

 本来建築の設計検討は現実の建物のサイズで行われるべきだ。し かし、現在では実際の作業量やコストを考えると原寸での検討は現 実的ではない。したがって1/100といった、縮小された模型を 見ることで形状を確認している。そのスケールを1/1にするだけ でも設計検討に対する貢献は大きなものであろう。  さらに、World Builder では何もない空間にモデルを描き出して いたが、改修や改築の場面でも AR は威力を発揮す s るであろう。 例えば、棟を半分だけ削った場合にどう見えるのかを、現場でリア ルタイムに行うこともできるようになるはずだ。 コンピューターが生まれる前、まだ図面という概念もなかった頃、 人は自分の感覚で物をつくっていたはずである。その感覚の一部を、 AR によって取り戻すことができるだろう。

AR(拡張現実)技術を導入した設計手法の開発と評価


謝辞  本論文を執筆するにあたり、非常に多くの方々にご指導・ご協力をしていただけたこと に感謝しています。 実際には会ったことはないけれど、メールやツイッターで気さくに、 そして的確なアドバイスをくれた渡辺先生、丁寧に指導し、暖かく見守ってくださった林田 先生、長澤さん、本当にありがとうございます。  渡辺研究室に入ってからもう 7 ヶ月も経ってしまったことに、今更ながら驚きます。最 初のとてもフランクなゼミがまだはっきりと思い出されます。毎週決まったメンバーと決 まった日にちに集まり、研究のことでも、そうでないことでも、いろんなことを話せるゼミ の存在は私にとって大きな心の支えでした。  もともと渡辺先生の建築表現のモデリングの授業で SketchUp を本格的に使い始め、それ 以来3DCAD や3D プリントだとかの技術の進歩を楽しく眺めていました。研究テーマがま だ固まっていなかった頃に遠田さんがゼミに来て、まーしーはこれで行っちゃいなよ。と研 究テーマについて背中を押してくれたおかげで、作る側になれたことをとても嬉しく思って います。作る側、といってもまだまだ未熟すぎるのですが。  担当のおかたつさん、 奥津さんには本当にお世話になりました。出来が悪くてすいません。 いつもいつも少し遅れてしまって。奥津さんの発想力とおかたつさんのまとめる力は最強の コンビでした。二人がいなかったら今年の情報ゼミはきっと壊滅的だったことでしょう。  そして菊地さん。幅広い分野に関連する菊地さんのツイートから、いろんなことに興味を 持って実際に行動するその姿勢を尊敬していました。牛蔵おいしかったです。今度は僕らが 予約しに行きます。井上さん、直接関わることはあまりなかったけれども、菊地さんの暴走 を止めるのにかなり重要な位置を占めていたと思います。人間観察力がハンパないです。す ぎたつ氏、視野が広すぎです。Touch the Numbers 頑張ってください。たすけ氏、何系で もないのですか。いろいろありがとうございました。長期間本借りて申し訳ないです。僕は もうふっきれました。一歩リード。  もこ、秘湯ハンターの称号は一生モノです。モコがマヨネーズをそのまま食べている姿に は引きました。ばーちー、キャラ確立が遅い。もうちょい早く仲良く慣れてたら夏休みとか もっとくだらない企画をたくさんできたのにと思う。春休みに誰かもう一人見つけて三人丸 三日プロジェクトやりましょう。向野、最後まであんまりしゃべることなかったけど、M0 メンバーの中でかなりいい味出してたよ。  あと、 卒論生のみんな。みんながいたからここまでずるずると頑張ることができたと思う。 もうちょいまともな生活したいね。  そして出岡。クラスと関数の違いとか JAVA についていろいろ教えてくれてありがとう。 実際的な質問に一番答えてくれたのはなんだかんだいつも出岡だったと思う。まじで出岡お らんとまずいことになってた気がする。  そうそして、寮の皆さん。家族のみんな。 名前を挙げられなかった人全員に感謝すると 20 ページくらいかかりそうなので、ここらで やめておきます。本当に本当に、今の自分が有り難いものだと感じます。 とても長く苦しかった卒論ですが、今思い返すと、なんだかんだですごく楽しい卒論でした。 感謝。 2010 年 11 月 11 日  渡辺仁史研究室 山本将支

AR(拡張現実)技術を導入した設計手法の開発と評価

054

謝辞


参考文献 ■参考論文

・今村弘樹: 「ARToolKit を用いた拡張現実による3D-CG モデリングツールのための一検討」  映像情報メディア学会技術報告 33(44), 35-42, 2009-10-26 ・薫田佳剛、田中佑樹、小笠原将也、金知俊: 「拡張現実感を用いたユーザーインターフェー  スに関する研究」  http://www.seto.nanzan-u.ac.jp/msie/gr-thesis/it/proc/2008/04mt051.pdf ・大内真哉、加戸啓太、平沢岳人、安藤正雄:   「建築における複合現実感の活用に関する研究 その1」  学術講演梗概集 . A-2, 防火 , 海洋 , 情報システム技術 2006, 513-514, 2006-07-31 ・加戸啓太、大内真哉、平沢岳人、安藤正雄:   「建築における複合現実感の活用に関する研究 その1」  学術講演梗概集 . A-2, 防火 , 海洋 , 情報システム技術 2006, 513-514, 2006-07-31 ・山田祐輝、加戸啓太、平沢岳人:「複合現実感を用いたインテリアシミュレータの開発」  学術講演梗概集 . A-2, 防火 , 海洋 , 情報システム技術 2008, 505-506, 2008-07-20 ・桐木理考、松本裕司、仲隆介、山口重之:「AR 技術を用いた建築デザインミーティング  支援ツールの開発に関する基礎的研究」  学術講演梗概集 . E-1, 建築計画 I, 各種建物・地域施設 , 設計方法 , 構法計画 , 人間工学 ,  計画基礎 2005, 643-644, 2005-07-31 ■参考文献

・山岡俊樹・鈴木一重・藤原義久/編著: 「構造化ユーザーインターフェースの設計と評価」  共立出版株式会社(2000 年) ・前川峻志、田中孝太郎: 「Built with Processing [ 改訂版 ]」  ビー・エヌ・エヌ新社(2008 年) ・日本建築学会(編集) :建築雑誌 vol118 No.1506 2003 年 6 月号

AR(拡張現実)技術を導入した設計手法の開発と評価

055

参考文献


■参考サイト ・Georg Klein Home Page  http://www.robots.ox.ac.uk/ gk/ ・ステレオ画像による3次元計測について  http://vip.ice.yamagata-cit.ac.jp/soturon/2003/gijutsu/stereo.html ・Parallel Tracking and Mapping for Small AR Workspaces (PTAM)  http://www.robots.ox.ac.uk/ gk/PTAM/ ・Processing.org  http://processing.org/ ・Wikipedia  http://ja.wikipedia.org/wiki/

AR(拡張現実)技術を導入した設計手法の開発と評価

056

参考文献


第二部

資料編

Part Ⅱ

Data

1 SIDE 評価項目の定義 2 ソースコード


SIDE によるインターフェース評価の評価項目のアンケートを行った際の定義を記す。 1 ∼3の項目は設計段階で使用するものであり、3章で示したものである。 € ‹ ~·ÛNR<(­Ä¶Õ¸¤…x,&%'‰" tœÈ'‚‰#41'4



NR<(–YÙÖY/r-Ú'‚" tœÈ'p_54$#41'4



DR@¿°DR@_g'‚e¨º'14f†(œÈ‹7“4



NR<(04¡0¶Õ(±…'1!"9>@K8?#41'4

¸¤ …‚ ‰ ~·ÛNR<(¸¤…'‚‰4



:8AQ>0IPH ¼7•[4



c‡º')aÎ&Œu7•[¤Ëº')i¦(¾ 7•[4

NR <( \Å ~·ÛNR<(ÇX'n7h&1'\Å4



NR<{`'–Y#41'͐4



fÑVÔ£VÔ7™¯'4





NF GR ;P D< 8 Q ~·Û]„º



#&ÇXÒ®ºÖغ&%#/]„º$q³'–Y#4 7•[4

ÇXÒ®ºÖغNR<‚‰͐7"13w(WZ41'4

ª˜ m‚ ‰ ~·Û‚Æ$&4NR<(Á¸}—&%˜m«»š7¹4



˜mÌ.'ÐÌ!–Y'&2&1'¹4



ƒd0ˆ,z6541&¿§7&

Ÿ  ~·ÛNR<²ž«'–Y'o3µ,+Z$Ž2541&Ÿ7•[4



©Ó'×g«&À´7o3_54

ˑŽ ~·Û–Y+#4s*7NR<'Ž+Z$Ž4



¬«ˑ#$'‚MOBE7S4



Y(ʔ¥¢b41'4

NR< (T X ‹( ¯\ ~·Ûk(Ïy2|U+#NR<(Š#ŠÉ3'–Y#41'4



NR<½b#JR>7v4$#41'4



=>CL^#l’'Ù½j#Úv›&1'4



AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE 評価項目の定義

1 SIDE 評価項目の定義

058

第二部 資料編


SIDE 評価項目の定義

]ƀ q«ËIN=#'¿"]ÆÀ\6†!2/&2



eXpq>?BH&2



IN=&Pp6…%/&2



:JN¹1%#(IN=&´¶2* :JN¹ g&^™ jy R˜"2/&2

mh IN=&'arb1 §

ƒ 1 q«Ëc,!‰2mh. ŒXš6{3!2mh ŒXM}­62,'/1$46Š[2



IN=—&W6¯)/#l6Q2



T'¯e6µ 2/%C=9L&2È8E;N@L?É

§›~ q«ËŸÃ'°.ŒXƒÄ6>LFK& 

12



ŒXƒÄ6§g&2ŸÃa'±¨6z±‘tÁ&2



z±%l6ª1º+<KNDL<%$6­‚2

”©r ~ q«Ëo'l'R0 œq'l'”©¯2/&2





IN='† !2u%ƒ1 _ ƒ1"-”©"2/&2ÈZ) E79K6ˆ#& ŽU%$œq'S“²!%#%$É u%ƒÄ"”©"2/&2

O³~ q«ËY2–®'¾.¦Ç ŒX'`V¾ X•Åk.°¥'ar'`V6„‹"2/& O³"°¥2



z±%lO³"2/&2



lo%12mh(Âvf<KNFf%$6¯

”©~ G A DL < q«Ël'±¨¿'À\ T¿#–i'À\b2/&s|U2ÈÀ\fÉ ÈGADL<#( 2S·#2S·'s|UÈÀ\fÉ'#"2É



‡¥¼#ŒX¼'À\¤&%



ʖi'°¥.e6 IN='¬.’x&h52



!! £€"b2/&2

–i'°¥.e6 IN='¬.’x&h52

 ¶d~ q«Ël'¦Ç.¸'»r&52/&2



–® ½±w Yž¢¡%$ l'¦Ç&/

059

第二部 資料編

!°6n2

 

AR(拡張現実)技術を導入した設計手法の開発と評価


‚Àå‹~‚À+Þ5 Ö1—iš¤Y;:<Kw.¯Ï8»^5 

°à_,»^8Æ+-Ú¿50,,ǬY;:<K8»^5



†+^Ò"Á+}%"—iš¤+5



!,BDIS, '+5z™ /,¸Æ×{*'52+ڏ5

 T[F X UJ X ‚ÀåW]A0#&5!,¢|+$&,BDISm1—iŸ‰+Á5 

¢|,tiv­8·(+24T[FXUJX ¹'52+5



TFO91:MZC]ãâfä+2#&—i,#1b¦΄8Æ



^Ò"Ÿ‰8Ç·5(+24—i,b¦'52+5ã^Ҋ(ƒ•+Þlä

‹~, €à ´ –k ‚ÀåW]A«£8q˜'52+€à´+‹~8–k5 

BDIS),2*«Ž+*#&5752+5



W]A,¿6&5«£1«£,Ç·85





ÛÉ*‹~+-oÜ*‘4‹~8a5€¡*U]GXãÊËÂËÌË*)ä+2#&ÛÈ"‹~8 –k5 ‹~ãBDISg¿y>PC=?Kä8¾4Õ–k5

´¶* ¯Ï \ TH E] C ‚ÀåW]A,YQX+z#"¯ÏTHE]C8j 

›¶'^À´*¯Ï8j



741¯Ï8j



º§*¯ÏTHE]C+5

ÍÑ ”, Ô ¥ ‚ÀåW]A,͐,ÑÅ8…ß+5 

n®ã@R[L,œÍä'-*neãTNV]*)+25ْä'5



cÝ,͐,ß±8Á5



W]A+µžÍ

&5(+0,8Á

*Á&3µžÍ52+5

Óh´ є , Ô¥ ‚ÀåW]AÓh´+ij²s8*2+5©ŒÐ'#&0є8* 

`ê*ut2.‡Éd_,—ir*)8‡É(*2+5



`ê*ʼá½*ʨ¸t*)8Æ7*2+5

—i ‚Àå—i8"(+BDIS3Øp*xˆ4×{8“ 

BDIS3,xˆØp'5(

AR(拡張現実)技術を導入した設計手法の開発と評価

*2+5

SIDE 評価項目の定義

^Ҋ

060

第二部 資料編


CDIU3´'wŠ5%



•eÒÜRF\QGZ'&Ý*aÕ)‘1Î(Ñy!}‡¨(5



RF\*’!%)DK[^?%?YH?8¼5

•e) r© ~ºÞ‘×)¾stjp•e)œ‚t'&(24W^B)•eÔ8ƒ'





5

W^B(jp5%(f­Ø…)ÛŒ|*3/jp (j6#W^B)͓8Ϧ5ÜJ N=ZK)”gÝ ‘×)¾stjp•e‘×)œnt8¿

†Ë Œ|)hi×d8¼ÓÂ'Œ|²›(l52(5@XN;H?JB<\)†Ë)‘¤8r°(f­ 5 :N= ^G \ D a)¿s8ǯ52(JB<\5ÉesÖ¢DU^E'•e85!/(`x¡$5  VFN 9 W^B)–t¹Úv,˜„¬¥)³Ì8o­!ÄÅ°'£{ÀªÜVFN9Ý8f%(24W^B)«Æ8€ š(5VFN98f%*W^B)–t¹Ú³Ì)Ð8¼5-!Ã!±$(Ÿ½l 5%«$5_…Ê™8Ã6+ )ˆ*ʙ8Ã5‰Â)'kc‹825%Ó seu « ]CDIU)b¸.)žÂ8752(5!/ €š(«Æ$52('5

)u«8”µ5seu«8”µ5%(24•e)Žz

]Ÿ¶1CDIU)¶ÙW^B)»§…(2"#Ó…*®'5 N;^ LM H ? W^B)•e(#Ñm'F<T\@Ñm'—¤$N;^LMH?8”g5%$•e´(¿76!% 8W^B(³35 PZO ]•e8AS^K5!/Ñm'><LPZOŸ½8”g5Ñm'F<T\@—¤­È8¼5‰Â 5 ]PZO'#0f50)(5%8·_(¼PZO*Áq°'0)%¼5 

AR(拡張現実)技術を導入した設計手法の開発と評価

SIDE 評価項目の定義



061

第二部 資料編


今回作成したプログラムの全ソースコード。 import processing.video.*; import processing.opengl.*; import saito.objloader.*; import processing.dxf.*; boolean record = false; import ddf.minim.*; Minim minim; AudioSample kick;

OBJModel modelT; OBJModel modelS; OBJModel modelW; OBJModel tmpmodelT; OBJModel tmpmodelS; OBJModel tmpmodelW; int bure_count = 0; boolean bure = false; boolean T = false; boolean S = false; boolean W = false; int countT = 0; int countS = 0; int countW = 0; boolean T2 = false ; boolean S2 = false ; boolean W2 = false; int rightcount = 0; boolean renzokuT = false; boolean renzokuS = false; boolean renzokuW = false;

AR(拡張現実)技術を導入した設計手法の開発と評価

header

2 ソースコード

062

第二部 資料編


int []TY = new int [10]; int []TZ = new int [10]; int []SX = new int [10]; int []SY = new int [10]; int []SZ = new int [10]; int []WX = new int [10]; int []WY = new int [10]; int []WZ = new int [10]; Capture rightCamera; Capture leftCamera; MovieMaker mm; PFont font; int Awidth = 640; int margin = 200;///////////////////////////// //int margin = 0;///////////////////////////// // 点の集合の座標を入れる配列 int Length = 1000; int []X = new int [Length]; int []Y = new int [Length]; int []Z = new int [Length]; //one の配列。 int oneLength = 100; int []oneX = new int [oneLength]; int []oneY = new int [oneLength]; int []oneZ = new int [oneLength]; int BoneX = 0; int BoneY = 0; int BoneZ = 0; int count=0;

AR(拡張現実)技術を導入した設計手法の開発と評価

header

int []TX = new int [10];// このあたりは OBJ のための配列

063

第二部 資料編


int heikin = 3; //Hsa を平均して sa を出すための配列 int []Hsa = new int [saheikin]; //BXp を平均して Xp を出すための配列 int []BX = new int [heikin]; int []BY = new int [heikin]; int []BZ = new int [heikin]; int []bX = new int [3]; int []bY = new int [3]; int []bZ = new int [3]; boolean L = false; boolean R = false; boolean C = false; boolean detectLR = false; boolean detectRR = false; float genten = 2000.000;////// 重要。 Ykai = -Zp+genten で使用。 //// 斜めの場合 //int DtransvalueX = 25;///////////////////////////// //int DtransvalueY = -4;///////////////////////////// //float DanglevalueX = -8;///////////////////////////// //float DanglevalueY = -261;///////////////////////////// //float Dscalevalue =0.290;///////////////////////////// // まっすぐの場合 int DtransvalueX = 0; int DtransvalueY = 0; float DanglevalueX = -47;///////////////////////////// float DanglevalueY = -PI*100;///////////////////////////// float Dscalevalue =0.2865;///////////////////////////// //float DanglevalueX = 0;///////////////////////////// //float scalevalue =413/genten;/////////////////////////////

AR(拡張現実)技術を導入した設計手法の開発と評価

header

int saheikin = 10;

064

第二部 資料編


int transvalueY = DtransvalueY; float anglevalueX = DanglevalueX; float anglevalueY = DanglevalueY; float scalevalue =Dscalevalue; int GLX=0; int GLY=0; int GRX=0; int GRY=0; int camheight = 1100;/////////////////////// カメラ設置位置の地面からの距離 int camdis = 300;///////////////// カメラ間距離 int focus = 805;///////////////// 定数 int sa = 0; int mode = 3; //leftcamera の位置が座標系原点になる。 int Xp = 0; int Yp = 0; int Zp = 0; int Xkai =0; int Ykai =0; int Zkai =0; // float fov =0.7679449; // float fov = PI/3.0; // float cameraZ = (height/2.0) / tan(PI * fov / 360.0); // perspective(fov, Awidth/height, cameraZ/10.0, cameraZ*10.0); // 実践する場合の形式。変数は無し。drawing の最初と最後に入れる。 // perspective(0.7679449, Awidth/height, 0.0000001, 1000000); // perspective(PI/3.0, Awidth/height, 0.0000001, 1000000);

int da = day(); int ho = hour(); int mi = minute(); int se = second();

AR(拡張現実)技術を導入した設計手法の開発と評価

header

int transvalueX = DtransvalueX;

065

第二部 資料編


// size(screen.Awidth, screen.height,OPENGL); // size(1280,960,OPENGL); // size(960,720,OPENGL); size(Awidth+margin,480,OPENGL); minim = new Minim(this); kick = minim.loadSample("BD.mp3", 2048); mm = new MovieMaker(this, Awidth, height, "capmovie"+da+" 日 "+ho+" 時 "+mi+" 分 "+se+" 秒 "+".mov"+"aaaaaaaa"); leftCamera = new Capture(this, Awidth, height, 120); rightCamera = new Capture(this, Awidth, height, 120);

modelT=new OBJModel(this, "table2.obj", "absolute", TRIANGLE_FAN); modelS=new OBJModel(this, "woodstool.obj", "absolute", TRIANGLE_FAN); modelW=new OBJModel(this, "window2.obj", "absolute", TRIANGLE_FAN); modelW.translateToCenter(); tmpmodelT=new OBJModel(this, "table2.obj", "absolute", TRIANGLE_FAN); tmpmodelS=new OBJModel(this, "woodstool.obj", "absolute", TRIANGLE_FAN); tmpmodelW=new OBJModel(this, "window2.obj", "absolute", TRIANGLE_FAN); tmpmodelW.translateToCenter(); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void setup

void setup() {

066

第二部 資料編


da = day(); ho = hour(); mi = minute(); se = second(); background(255); if (record == true) { beginRaw(DXF, +da+" 日 "+ho+" 時 "+mi+" 分 "+se+" 秒 "+".dxf"); // Start recording to the file } switchmode(); mouseS(); keisan(); grid(); drawing(); drawTop(); if (record == true) { endRaw(); record = false; // Stop recording to the file } if(bure)kick.trigger(); bure=false; }

void stop() { kick.close(); minim.stop(); super.stop(); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void draw

void draw() {

067

第二部 資料編


lights(); //perspective(0.60, width/height+0.25, 0.001, 1000); //perspective 用 // Xkai =-Xp;///////////////////////////// // Ykai = -Zp+(int)genten; // Zkai =-Yp;///////////////////////////// // まっすぐ用 Xkai =int( -Xp*float(Zp)/1400);///////////////////////////// Ykai = -Zp+(int)genten; Zkai =int( -Yp*float(Zp)/1350);///////////////////////////// // // 斜め用 // float theta = atan(-900.00/220.00)+PI/2;// 実測値。環境によって異なる // Xkai=int( -Xp*float(Zp)/1400); // Ykai=int((-Zp+genten)*cos(theta)-(-Yp*float(Zp)/1350)*sin(theta)); // Zkai=int((-Zp+genten)*sin(theta)+(-Yp*float(Zp)/1350)*cos(theta));

////////////////////bx は一瞬前の Xkai を入れ続ける。pmouseX のようなもの。スナッ プのために。 int s = millis(); if(s%1 == 0){ for (int i = 2 ; i >=1 ; i--) { bX[i]=bX[i-1]; bY[i]=bY[i-1]; bZ[i]=bZ[i-1]; } bX[0]=Xkai; bY[0]=Ykai; bZ[0]=Zkai; } /////////////////////bx は一瞬前の Xkai を入れ続ける。pmouseX のようなもの。スナッ プのために。

AR(拡張現実)技術を導入した設計手法の開発と評価

void draw

void drawing () {

068

第二部 資料編


if(dist(bX[0],bY[0],bZ[0],bX[2],bY[2],bZ[2])>=50){ bure = true; bure_count++; println(bure_count); } ///////////////////////////////////////////////////////// ブレ drawOBJ();

/////////////////// 左クリックの時配列に入れる。球の連続のために。 if(L && !C &&!R) { if(!bure){ ////////////////////////////////////////////////////////// ブレ for (int i = Length-1 ; i >=1 ; i--) { X[i]=X[i-1]; Y[i]=Y[i-1]; Z[i]=Z[i-1]; } X[0]=Xkai; Y[0]=Ykai; Z[0]=Zkai; } ////////////////////////////////////////////////////////// ブレ } /////////////////// 左クリックの時配列に入れる。球の連続のために。

AR(拡張現実)技術を導入した設計手法の開発と評価

void draw

////////////////////////////////////////////////////////// ブレ

069

第二部 資料編


for(int i=0; i<oneLength; i++){ if(dist(Xkai, Ykai, Zkai,oneX[i], oneY[i], oneZ[i]) < 50){ //

stroke(255,0,0);

//

box(50);

// println("X"+Xkai); Xkai = oneX[i]; Ykai = oneY[i]; Zkai = oneZ[i]; } }

for(int i=0; i<9; i++){ if(dist(Xkai, Ykai, Zkai,TX[i], TY[i], TZ[i]) < 50){ //

stroke(255,0,0);

//

box(50);

// println("X"+Xkai); Xkai = TX[i]; Ykai = TY[i]; Zkai = TZ[i]; } } for(int i=0; i<9; i++){ if(dist(Xkai, Ykai, Zkai,SX[i], SY[i], SZ[i]) < 50){ //

stroke(255,0,0);

//

box(50);

// println("X"+Xkai); Xkai = SX[i]; Ykai = SY[i]; Zkai = SZ[i]; } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void draw

///////////////////////////////////////////////// スナップについて。

070

第二部 資料編


if(dist(Xkai, Ykai, Zkai,WX[i], WY[i], WZ[i]) < 50){ //

stroke(255,0,0);

//

box(50);

// println("X"+Xkai); Xkai = WX[i]; Ykai = WY[i]; Zkai = WZ[i]; } } /////////////////////////////////////////////// スナップについて。

AR(拡張現実)技術を導入した設計手法の開発と評価

void draw

for(int i=0; i<9; i++){

071

第二部 資料編


eight(Xkai,Ykai,Zkai,10);

for (int i=0 ; i<Length-1 ; i++) { strokeWeight(5); stroke(0,0,0); ///////////////// 線を書く //

if(X[i] != 0 && Y[i] != 0 && Z[i] != 0 && X[i+1] != 0 && Y[i+1] != 0 && Z[i+1] != 0 ) {

//

line(X[i],Y[i],Z[i],X[i+1],Y[i+1],Z[i+1]);

//

}

///////////////// 線を書く if(X[i] != 0 && Y[i] != 0 && Z[i] != 0 ) { eight(X[i],Y[i],Z[i],10); } //println(+X[i]+","+Y[i]+","+Z[i]+","+X[i+1]+","+Y[i+1]+","+Z[i+1]); } //////////////////////////////////////////////// 線を書く、もしくは球の連続

////////////////////////////////////////// 中ボタンクリックの時、四角を描く for (int i=1; i<oneLength-1; i+=2) { one(oneX[i],oneY[i],oneZ[i],oneX[i+1],oneY[i+1],oneZ[i+1]); } if(count%2 ==1) { one (BoneX,BoneY,BoneZ,Xkai-BoneX,Ykai-BoneY,Zkai-BoneZ); } /////////////////////////////////////////// 中ボタンクリックの時、四角を描く

perspective(); camera(); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void drawing

///////////////////////////////////////////// 線を書く、もしくは球の連続

072

第二部 資料編


if (mouseButton == CENTER) { count++; if(count%2 == 1) { BoneX=Xkai; BoneY=Ykai; BoneZ=Zkai; oneX[count]=Xkai; oneY[count]=Ykai; oneZ[count]=Zkai; } if(count%2 == 0) { oneX[count]=Xkai-BoneX; oneY[count]=Ykai-BoneY; oneZ[count]=Zkai-BoneZ; } } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void mouseClicked

void mouseClicked() {

073

第二部 資料編


rightcount=0; if(key == '1') { mode = 1; } else if(key == '2') { mode = 2; } else if(key == '3') { mode = 3; } else if(key == '0') { mode = 0; } if ( key=='i') { rightCamera.settings(); leftCamera.settings(); } if (key == 'd') { for(int i=0; i<Length-1; i++) { X[i]=0; Y[i]=0; Z[i]=0; } for(int i=0; i<oneLength-1; i++) { oneX[i]=0; oneY[i]=0; oneZ[i]=0; }

AR(拡張現実)技術を導入した設計手法の開発と評価

void mouseClicked

void keyPressed() { ///////////////////////void keyPressed

074

第二部 資料編


TX[i]= 30000; TY[i]= 30000; TZ[i]= 30000; SX[i]= 30000; SY[i]= 30000; SZ[i]= 30000; WX[i]= 30000; WY[i]= 30000; WZ[i]= 30000; } count =0; countT=0; countW=0; countS=0; } if (keyPressed == true && key=='r') { mm.addFrame(); fill(255,0,0); text(" ● REC",Awidth-60,15); //save("diagonal.tif"); }

if (key=='o') { save("ScreenShot"+da+" 日 "+ho+" 時 "+mi+" 分 "+se+" 秒 "+".tif"); println("ScreenShot"+da+" 日 "+ho+" 時 "+mi+" 分 "+se+" 秒 "+".tif"); }

if (key == 'e') { mm.finish(); exit(); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void keyPressed

for(int i=0; i<9; i++) {

075

第二部 資料編


record = true; }

if (key == 's') { S=true; T=false; W=false; }

if (key == 't') { S=false; T=true; W=false; }

if (key == 'w') { S=false; T=false; W=true; }

AR(拡張現実)技術を導入した設計手法の開発と評価

void keyPressed

if (key == 'p') { // Press R to save the file

076

第二部 資料編


for(int i=0; i<oneLength; i++){ if(dist(Xkai, Ykai, Zkai,oneX[i], oneY[i], oneZ[i]) < 50){ oneX[i]=30000; oneY[i]=30000; oneZ[i]=30000; } } for(int i=0; i<9; i++){ if(dist(Xkai, Ykai, Zkai,WX[i], WY[i], WZ[i]) < 50){ WX[i]=30000; WY[i]=30000; WZ[i]=30000; } if(dist(Xkai, Ykai, Zkai,SX[i], SY[i], SZ[i]) < 50){ SX[i]=30000; SY[i]=30000; SZ[i]=30000; } if(dist(Xkai, Ykai, Zkai,TX[i], TY[i], TZ[i]) < 50){ TX[i]=30000; TY[i]=30000; TZ[i]=30000; } } } }

//////////////////////////void keyPressed

AR(拡張現実)技術を導入した設計手法の開発と評価

void keyPressed

if (key == 'k') {

077

第二部 資料編


void mouseReleased() { //////////////////////////////void mouseReleased L = false; R = false; C = false; rightcount ++; }

//////////////////////////////void mouseReleased

AR(拡張現実)技術を導入した設計手法の開発と評価

void mouse Released

// マウスリリースとプレスの判定

078

第二部 資料編


/////////////////////////////void mousePressed

if (mouseButton == LEFT) { rightcount=0; renzokuS=false; L = true; } else if (mouseButton == RIGHT) { R = true; } else if(mouseButton == CENTER) { rightcount=0; renzokuS=false; C = true; } }

/////////////////////////////////////void mousePressed

AR(拡張現実)技術を導入した設計手法の開発と評価

void mousePressed

void mousePressed() {

079

第二部 資料編


translate(Awidth/2,height/2);/////////////////trans/////////////////// // ここで画面平面上のセンターになりました。 translate(transvalueX,transvalueY); /////////////////trans/////////////////// rotateX(-anglevalueY/200);/////////////////rotate/////////////////// rotateZ(anglevalueX/200);/////////////////rotate/////////////////// scale(scalevalue); ////////// ここまでは全座標系に対して有効 // println(pmouseY-mouseY);

// レフト if(L && !C && !R) { }

// ライト if(!L && !C && R && !S && !T && !W ) { if (mousePressed == true) {/////////////////////////////////////////// スナップから移 動の実験のために加筆 for(int i=0; i<oneLength; i++){ if(dist(Xkai, Ykai, Zkai,oneX[i], oneY[i], oneZ[i]) < 50){ oneX[i] += bX[0]-bX[1]; oneY[i] += bY[0]-bY[1]; oneZ[i] += bZ[0]-bZ[1]; } } for(int i=0; i<9; i++){ if(dist(Xkai, Ykai, Zkai,WX[i], WY[i], WZ[i]) < 50){ WX[i] += bX[0]-bX[1]; WY[i] += bY[0]-bY[1]; WZ[i] += bZ[0]-bZ[1]; }

AR(拡張現実)技術を導入した設計手法の開発と評価

void mouseS

void mouseS () { //////////////////////////////////////////// ここから mouse_switch

080

第二部 資料編


SX[i] += bX[0]-bX[1]; SY[i] += bY[0]-bY[1]; SZ[i] += bZ[0]-bZ[1]; } if(dist(Xkai, Ykai, Zkai,TX[i], TY[i], TZ[i]) < 50){ TX[i] += bX[0]-bX[1]; TY[i] += bY[0]-bY[1]; TZ[i] += bZ[0]-bZ[1]; } } } /////////////////////////////////////////// スナップから移動の実験のために加筆 }

// センター if(!L && C && !R) { if (mousePressed == true) { anglevalueX=anglevalueX-(pmouseX-mouseX); anglevalueY=anglevalueY-(pmouseY-mouseY); } }

// センターとライト if(!L && C && R) { if (mousePressed == true ) { scalevalue=scalevalue+0.01*((pmouseY-mouseY)/20); if (scalevalue<0) { scalevalue=-scalevalue; } } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void mouseS

if(dist(Xkai, Ykai, Zkai,SX[i], SY[i], SZ[i]) < 50){

081

第二部 資料編


if(L && C && !R ) { if (mousePressed == true) { transvalueX=transvalueX-(pmouseX-mouseX); transvalueY=transvalueY-(pmouseY-mouseY); } }

// レフトとライト if(L && !C && R) { T=false; S=false; W=false; T2=false; S2=false; W2=false;

if (mousePressed == true ) { for(int i=0; i<Length-1; i++) { X[i]=0; Y[i]=0; Z[i]=0; } for(int i=0; i<oneLength-1; i++) { oneX[i]=0; oneY[i]=0; oneZ[i]=0; }

AR(拡張現実)技術を導入した設計手法の開発と評価

void mouseS

// レフトとセンター

082

第二部 資料編


TX[i]= 30000; TY[i]= 30000; TZ[i]= 30000; SX[i]= 30000; SY[i]= 30000; SZ[i]= 30000; WX[i]= 30000; WY[i]= 30000; WZ[i]= 30000; } count =0; countT=0; countW=0; countS=0; } }

// 3ボタン if(L && C && R) { // ここは座標リセットにした。 transvalueX = 0; transvalueY = 0; anglevalueX = -47;///////////////////////////////////////// anglevalueY = -PI*100; scalevalue = 0.2865;/////////////////////////////////// } } //////////////////////////////////////////////// ここまで void mouseS

AR(拡張現実)技術を導入した設計手法の開発と評価

void mouseS

for(int i=0; i<9; i++) {

083

第二部 資料編


switch(mode) { case 1: if ( leftCamera.available() == true) { leftCamera.read(); scale(-1.0, 1.0);// 左右反転(鏡像)// この3行が反転に関して。 image(leftCamera, -Awidth,0);// この3行が反転に関して。 scale(-1.0, 1.0);// 左右反転(鏡像)// この3行が反転に関して。 //image(leftCamera, 0,0); } leftar(); break;

case 2: if ( rightCamera.available() == true) { rightCamera.read(); scale(-1.0, 1.0);// 左右反転(鏡像)// この3行が反転に関して。 image(rightCamera, -Awidth,0);// この3行が反転に関して。 scale(-1.0, 1.0);// 左右反転(鏡像)// この3行が反転に関して。 //image(rightCamera, 0,0); } rightar(); break;

AR(拡張現実)技術を導入した設計手法の開発と評価

void switchmode

void switchmode(){

084

第二部 資料編


if (rightCamera.available() ¦¦ leftCamera.available() == true) { leftCamera.read(); rightCamera.read(); scale(-1.0, 1.0);// 左右反転(鏡像)// この3行が反転に関して。ここがケース0とち がう。 pushMatrix(); translate(0,0,-3741); image(leftCamera, +margin/2-2710,-2160,6400,4800);// この3行が反転に関して。 //image(leftCamera, +margin/2-3520,-2160,6400,4800);// この3行が反転に関して。 popMatrix(); scale(-1.0, 1.0);// 左右反転(鏡像)// この3行が反転に関して。 //image(leftCamera, 0,0);// ここがケース0とちがう。 } //translate(0,0,100);// 奥行き。 leftar(); rightar(); drawtext(); break;

case 0: if (rightCamera.available() ¦¦ leftCamera.available() == true) { leftCamera.read(); rightCamera.read(); } leftar(); rightar(); drawtext(); break; } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void switchmode

case 3:

085

第二部 資料編


void leftar() { leftCamera.loadPixels(); int redX = 0; int redY = 0; int redC = 0; int X=0; int Y=0; int indexLeft = 0; for (int y = 0; y < height; y++) { for (int x = 0; x < Awidth; x++) { int pixelValue = leftCamera.pixels[indexLeft]; float pixelRED = red(pixelValue); float pixelBLUE = blue(pixelValue); float pixelGREEN = green(pixelValue); // Red if (pixelRED > 200 && pixelBLUE < 100 && pixelGREEN < 100) { redX += indexLeft % Awidth; redY += indexLeft / Awidth; redC++; detectLR = true; } indexLeft++; } } fill(0, 0, 0); if ( redC != 0 ) { X=redX / redC; Y=redY / redC; noStroke(); } strokeWeight(2); stroke(255,0,0); ellipse(Awidth-X,Y, 10, 10); GLX=X-(Awidth/2); GLY=Y-(height/2); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void switchmode

// 赤を認識して、GLX、GLY、GRX、GRY、ellpse まで

086

第二部 資料編


void rightar() { rightCamera.loadPixels(); int redX = 0; int redY = 0; int redC = 0; int X=0; int Y=0; int indexright = 0; for (int y = 0; y < height; y++) { for (int x = 0; x < Awidth; x++) { int pixelValue = rightCamera.pixels[indexright]; float pixelRED = red(pixelValue); float pixelBLUE = blue(pixelValue); float pixelGREEN = green(pixelValue); // Red if (pixelRED > 200 && pixelBLUE < 100 && pixelGREEN < 100) { redX += indexright % Awidth; redY += indexright / Awidth; redC++; detectRR = true; } indexright++; } } fill(0, 0, 0); if ( redC != 0 ) { X=redX / redC; Y=redY / redC; noStroke(); } strokeWeight(2); stroke(255,0,0); ellipse(Awidth-X,Y, 10, 10); GRX=X-(Awidth/2); GRY=Y-(height/2); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void rightar

// 赤を認識して、GLX、GLY、GRX、GRY、ellpse まで

087

第二部 資料編


//noStroke(); /////////////////////////////////////////////////////////////////////////////////// if(S){ rightcount=0;/////////// 気を付け。 pushMatrix(); translate(Xkai,Ykai,-camheight);////////////////////////420 はオブジェクトの高さ。 //translate(Xkai,Ykai,Zkai);/////////////////////////////////////////// rotateX(-PI/2); tmpmodelS.draw(); popMatrix(); if( countS == 0 ){ if(mousePressed && mouseButton == RIGHT ){ SX[0]=Xkai; SY[0]=Ykai; SZ[0]=Zkai; S2 = true; S = false; } } if ( countS != 0 ){ if(mousePressed && mouseButton == RIGHT ){ for(int i=9; i>=1; i--){ SX[i]=SX[i-1]; SY[i]=SY[i-1]; SZ[i]=SZ[i-1]; } SX[0]=Xkai; SY[0]=Ykai; SZ[0]=Zkai; S=false; countS++; } } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void rightar

void drawOBJ(){

088

第二部 資料編


pushMatrix(); translate(SX[0],SY[0],-camheight);//////////////////////////420 rotateX(-PI/2); tmpmodelS.draw(); popMatrix(); for(int i = 0; i < modelS.getVertexCount(); i++){ PVector orgv = modelS.getVertex(i); PVector tmpv = new PVector(); tmpv.x = orgv.x ; tmpv.y = orgv.y * (Zkai+camheight)/420; tmpv.z = orgv.z ; tmpmodelS.setVertex(i, tmpv); if(rightcount == 1){ if(mousePressed && mouseButton == RIGHT ){ for(int j=9; j>=1; j--){ countS=1; SX[j]=SX[j-1]; SY[j]=SY[j-1]; SZ[j]=SZ[j-1]; S2=false; } renzokuS=true; } } } } if(rightcount==3 && renzokuS==true){ S = true; } /////////////////////////////////////////////////////////////////////////////////////

AR(拡張現実)技術を導入した設計手法の開発と評価

void rightar

if(S2){

089

第二部 資料編


renzokuS=false; rightcount=0;/////////// 気を付け。 pushMatrix(); translate(Xkai,Ykai,Zkai); rotateX(-PI/2); modelW.draw(); popMatrix(); if(mousePressed && mouseButton == RIGHT ){ for(int i=9; i>=1; i--){ WX[i]=WX[i-1]; WY[i]=WY[i-1]; WZ[i]=WZ[i-1]; } WX[0]=Xkai; WY[0]=Ykai; WZ[0]=Zkai; W=false; countW++; } }

/////////////////////////////////////////////////////////////////////////////////////

AR(拡張現実)技術を導入した設計手法の開発と評価

void rightar

if (W){

090

第二部 資料編


//

renzokuS=false;

//

rightcount=0;/////////// 気を付け。

//

pushMatrix();

//

translate(Xkai,Ykai,-camheight);

//

rotateX(-PI/2);

//

modelT.draw();

//

popMatrix();

//

if(mousePressed && mouseButton == RIGHT ){

//

for(int i=9; i>=1; i--){

//

TX[i]=TX[i-1];

//

TY[i]=TY[i-1];

//

TZ[i]=TZ[i-1];

//

}

//

TX[0]=Xkai;

//

TY[0]=Ykai;

//

TZ[0]=Zkai;

//

T=false;

//

countT++;

//

}

// }

AR(拡張現実)技術を導入した設計手法の開発と評価

void rightar

// if (T){

091

第二部 資料編


rightcount=0;/////////// 気を付け。 pushMatrix(); translate(Xkai,Ykai,-camheight);////////////////////////// //translate(Xkai,Ykai,Zkai);///////////////////////////////////// rotateX(-PI/2); tmpmodelT.draw(); popMatrix(); if( countT == 0 ){ if(mousePressed && mouseButton == RIGHT ){ TX[0]=Xkai; TY[0]=Ykai; TZ[0]=Zkai; T2 = true; T = false; } } if ( countT != 0 ){ if(mousePressed && mouseButton == RIGHT ){ for(int i=9; i>=1; i--){ TX[i]=TX[i-1]; TY[i]=TY[i-1]; TZ[i]=TZ[i-1]; } TX[0]=Xkai; TY[0]=Ykai; TZ[0]=Zkai; T=false; countT++; } } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void rightar

if(T){

092

第二部 資料編


pushMatrix(); translate(TX[0],TY[0],-camheight);////////////////////////// rotateX(-PI/2); tmpmodelT.draw(); popMatrix(); for(int i = 0; i < modelT.getVertexCount(); i++){ PVector orgv = modelT.getVertex(i); PVector tmpv = new PVector(); tmpv.x = orgv.x* (Xkai-SX[0])/450; tmpv.y = orgv.y ; tmpv.z = orgv.z * (-Ykai-SY[0])/450; tmpmodelT.setVertex(i, tmpv); if(rightcount == 1){ tmpv.x = orgv.x ; tmpv.y = orgv.y * (Zkai+camheight)/720; tmpv.z = orgv.z ; tmpmodelT.setVertex(i, tmpv); } if(rightcount == 2){ if(mousePressed && mouseButton == RIGHT ){ for(int j=9; j>=1; j--){ countT=1; TX[j]=TX[j-1]; TY[j]=TY[j-1]; TZ[j]=TZ[j-1]; T2=false; } renzokuT=true; } } } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void drawOBJ

if(T2){

093

第二部 資料編


T = true; } /////////////////////////////////////////////////////////////////////////////////////

for(int i = 0 ; i<countS; i++){ pushMatrix(); translate(SX[i],SY[i],-camheight); rotateX(-PI/2); tmpmodelS.draw(); popMatrix(); } for(int i = 0 ; i<countT; i++){ pushMatrix(); translate(TX[i],TY[i],-camheight); rotateX(-PI/2); tmpmodelT.draw(); popMatrix(); } for(int i = 0 ; i<countW; i++){ pushMatrix(); translate(WX[i],WY[i],WZ[i]); rotateX(-PI/2); tmpmodelW.draw(); popMatrix(); } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void drawOBJ

if(rightcount==4 && renzokuT==true){

094

第二部 資料編


if(!record){ //textFont(font,20); fill(0,0,0); text("Xp("+Xp+")",20,20); text("Yp("+Yp+")",20,40); text("Zp("+Zp+")",20,60); text("GLX,GLY("+GLX+","+GLY+")",20,120); text("GRX,GRY("+GRX+","+GRY+")",20,140); text("sa("+sa+")",20,160); text("transvalueX("+transvalueX+")",20,200); text("transvalueY("+transvalueY+")",20,220); text("anglevalueX("+anglevalueX+")",20,240); text("anglevalueY("+anglevalueY+")",20,260); text("scalevalue("+scalevalue+")",20,280); text(" Xkai("+Xkai+")",20,320); text(" Ykai("+Ykai+")",20,340); text(" Zkai("+Zkai+")",20,360); text("Zkai2("+(Zkai+camheight)+")",20,380); text("Top",Awidth+5,15); text("Front",Awidth+5,150+15); text("Right",Awidth+5,300+15); text("Detect",Awidth+5,450+15); } }

AR(拡張現実)技術を導入した設計手法の開発と評価

void drawtext

void drawtext () {

095

第二部 資料編


////////////////////////////////////////////// 軸を表示 //pushMatrix(); // translate(0,0,-camheight); strokeWeight(3); stroke(255,0,0); line (0,0,0,300,0,0); stroke(0,255,0); line (0,0,0,0,300,0); stroke(0,0,255); line (0,0,0,0,0,300); noStroke();

////////////////////////////////////////////// グリッドを書く pushMatrix(); stroke(0,0,0); strokeWeight(1); translate(-1000,-1000,0);/////////////////trans scale(20); for(int i=0 ; i<11 ; i++) { for(int j=0 ; j<11 ; j++) { line(10*i,0,10*i,100); line(0,10*j,100,10*j); } } //popMatrix(); popMatrix(); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void grid

void grid() {

096

第二部 資料編


void drawTop(){ pushMatrix(); translate(Awidth,0); strokeWeight(2); stroke(0); line(0,0,0,height-1); line(0,1,margin-1,1); line(0,height-1,margin-1,height-1); line(margin-1,0,margin-1,height-1); line(0,150,200,150); line(0,300,200,300); line(0,450,200,450); line(50,450,50,height-1);

int waru =8;

///////////////////waru は本体に対しての縮小表示の割り算

int NX =Xkai/waru; int NY =Ykai/waru-1000/waru; int NZ =Zkai/waru;

AR(拡張現実)技術を導入した設計手法の開発と評価

void grid

//////////////int NY =Ykai/waru-1000/waru; についてかなり注意しないといけない。

097

第二部 資料編


translate(margin/2,75); for (int i=0 ; i<Length-1 ; i++) { strokeWeight(1); stroke(0,0,0); if(X[i] != 0 && Y[i] != 0 && Z[i] != 0 && X[i+1] != 0 && Y[i+1] != 0 && Z[i+1] != 0 ) { line(X[i]/waru,Y[i]/waru-1000/waru,X[i+1]/waru,Y[i+1]/waru-1000/waru); } } for (int i=1; i<oneLength-1; i+=2) { rect(oneX[i]/waru,oneY[i]/waru-1000/waru,oneX[i+1]/waru,oneY[i+1]/waru); } if(count%2 ==1) { rect (BoneX/waru,BoneY/waru-1000/waru,(Xkai-BoneX)/waru,(Ykai-BoneY)/waru); } ellipse(NX,NY,3,3); /////////////////////////////////////////////////////////////// フロント translate(0,150); for (int i=0 ; i<Length-1 ; i++) { strokeWeight(1); stroke(0,0,0); if(X[i] != 0 && Y[i] != 0 && Z[i] != 0 && X[i+1] != 0 && Y[i+1] != 0 && Z[i+1] != 0 ) { line(X[i]/waru,-Z[i]/waru,X[i+1]/waru,-Z[i+1]/waru); } } for (int i=1; i<oneLength-1; i+=2) { rect(oneX[i]/waru,-oneZ[i]/waru,oneX[i+1]/waru,-oneZ[i+1]/waru); } if(count%2 ==1) { rect (BoneX/waru,-BoneZ/waru,(Xkai-BoneX)/waru,-(Zkai-BoneZ)/waru); } ellipse(NX,-NZ,3,3);

AR(拡張現実)技術を導入した設計手法の開発と評価

void grid

/////////////////////////////////////////////////////////////// トップ

098

第二部 資料編


translate(0,150); for (int i=0 ; i<Length-1 ; i++) { strokeWeight(1); stroke(0,0,0); if(X[i] != 0 && Y[i] != 0 && Z[i] != 0 && X[i+1] != 0 && Y[i+1] != 0 && Z[i+1] != 0 ) { line(-Y[i]/waru+1000/waru,-Z[i]/waru,-Y[i+1]/waru+1000/waru,-Z[i+1]/waru); } } for (int i=1; i<oneLength-1; i+=2) { rect(-oneY[i]/waru+1000/waru,-oneZ[i]/waru,-oneY[i+1]/waru,-oneZ[i+1]/waru); } if(count%2 ==1) { rect (-BoneY/waru+1000/waru,-BoneZ/waru,-(Ykai-BoneY)/waru,-(Zkai-BoneZ)/waru); } ellipse(-NY,-NZ,3,3);

/////////////////////////////////////////////////////////////// 判別 translate(25,75); if(detectLR){ ellipse(-GLX/4.4,10,10,10); } if(detectRR){ ellipse(-GRX/4.4,20,10,10); } popMatrix(); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void drawtop

/////////////////////////////////////////////////////////////// ライト

099

第二部 資料編


void keisan() {

int BXp = 0; int BYp = 0; int BZp = 0;

int Bsa=0; int sum =0; int s = millis(); Bsa = GLX-GRX;//Bsa は sa の前身で GLX-GLY。(GLX は width/2 や height/2 を引いて ある。 ) for(int i=0 ; i<saheikin; i++) { if(s%saheikin == i) { Hsa[i]=Bsa; } sum = sum+Hsa[i]; } sa=sum/saheikin;//sa は Bsa を平均化した後の物。 //println(sum/saheikin);

if (sa!=0) { BXp = GLX*camdis/sa; BYp = GLY*camdis/sa; BZp = focus*camdis/sa; }

AR(拡張現実)技術を導入した設計手法の開発と評価

void keisan

//BXp の計算、Xp を出すまで。

100

第二部 資料編


int sumBX = 0; int sumBY = 0; int sumBZ = 0; for(int i=0 ; i<heikin; i++) { if(s%heikin == i) { BX[i]=BXp; BY[i]=BYp; BZ[i]=BZp; } sumBX=sumBX+BX[i]; sumBY=sumBY+BY[i]; sumBZ=sumBZ+BZ[i]; } Xp=sumBX/heikin; Yp=sumBY/heikin; Zp=sumBZ/heikin; //////////////////////BX pの平均から Xp を出す。 /* Xp=BXp; Yp=BYp; Zp=BZp; */ }

AR(拡張現実)技術を導入した設計手法の開発と評価

void keisan

//////////////////////BX pの平均から Xp を出す。

101

第二部 資料編


fill(0,100,200,150); strokeWeight(1); stroke(0,0,0); beginShape(); vertex(x, y, z ); vertex(x+X, y, z ); vertex(x+X, y+Y, z ); vertex(x, y+Y, z ); endShape(CLOSE); beginShape(); vertex(x, y, z+Z ); vertex(x+X, y, z+Z ); vertex(x+X, y+Y, z+Z ); vertex(x, y+Y, z+Z ); endShape(CLOSE); beginShape(); vertex(x+X, y, z ); vertex(x+X, y+Y, z ); vertex(x+X, y+Y, z+Z ); vertex(x+X, y, z+Z ); endShape(CLOSE); beginShape(); vertex(x, y, z ); vertex(x+X, y, z ); vertex(x+X, y, z+Z ); vertex(x, y, z+Z ); endShape(CLOSE); beginShape(); vertex(x+X, y+Y, z ); vertex(x, y+Y, z ); vertex(x, y+Y, z+Z ); vertex(x+X, y+Y, z+Z ); endShape(CLOSE);

AR(拡張現実)技術を導入した設計手法の開発と評価

void one

void one(int x, int y, int z, int X, int Y, int Z) {

102

第二部 資料編


vertex(x, y, z ); vertex(x, y+Y, z ); vertex(x, y+Y, z+Z ); vertex(x, y, z+Z ); endShape(CLOSE); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void one

beginShape();

103

第二部 資料編


void eight(int A, int B, int C,int a){ fill(0,100,200,90); noStroke();

beginShape(); vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+0); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+0); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+0); vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+0); endShape(CLOSE);

beginShape(); vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+3*a); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+3*a); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+3*a); vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+3*a); endShape(CLOSE);

beginShape(); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+a); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+2*a); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+2*a); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+a); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+a); endShape(CLOSE);

AR(拡張現実)技術を導入した設計手法の開発と評価

void one

//eight は(X 座標、Y 座標、Z 座標、大きさ)で球を書く。

104

第二部 資料編


vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+a); vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+a); endShape(CLOSE);

beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+a); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+a); endShape(CLOSE); //z 0 a beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+0); vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+a); vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+0); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+0); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+a); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+a); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+0); endShape(CLOSE); beginShape(); vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+0); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+a); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+a); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+0); endShape(CLOSE);

AR(拡張現実)技術を導入した設計手法の開発と評価

void one

beginShape();

105

第二部 資料編


vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+0); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+a); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+0); endShape(CLOSE);

beginShape(); vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+0); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+0); vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+a); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+0); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+a); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+0); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+a); endShape(CLOSE);

//z a 2a beginShape(); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+a); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+a); endShape(CLOSE);

AR(拡張現実)技術を導入した設計手法の開発と評価

void one

beginShape();

106

第二部 資料編


vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+a); vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+a); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+a); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+a); endShape(CLOSE); //z 2a 3a beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+3*a); vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+3*a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+3*a); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+3*a); endShape(CLOSE);

AR(拡張現実)技術を導入した設計手法の開発と評価

void one

beginShape();

107

第二部 資料編


vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+3*a); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+2*a); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+3*a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+3*a); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+2*a); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+3*a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+a, B-3/2*a+a ,C-3/2*a+3*a); vertex(A-3/2*a+0, B-3/2*a+a ,C-3/2*a+2*a); vertex(A-3/2*a+a, B-3/2*a+0 ,C-3/2*a+2*a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+a ,C-3/2*a+3*a); vertex(A-3/2*a+2*a, B-3/2*a+0 ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+a ,C-3/2*a+2*a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+a, B-3/2*a+2*a ,C-3/2*a+3*a); vertex(A-3/2*a+a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+0, B-3/2*a+2*a ,C-3/2*a+2*a); endShape(CLOSE); beginShape(); vertex(A-3/2*a+2*a, B-3/2*a+2*a ,C-3/2*a+3*a); vertex(A-3/2*a+2*a, B-3/2*a+3*a ,C-3/2*a+2*a); vertex(A-3/2*a+3*a, B-3/2*a+2*a ,C-3/2*a+2*a); endShape(CLOSE); }

AR(拡張現実)技術を導入した設計手法の開発と評価

void one

beginShape();

108

第二部 資料編


U1006 AR( )

拡 張 現 実 技 術 を 導 入 し た 設 計 手 法 の 開 発 と 評 価

山 本   将 支

AR(拡張現実)技術を導入した設計手法の開発と評価  

2010年度,卒業論文,山本将支

Read more
Read more
Similar to
Popular now
Just for you