船舶海洋情報学

九州大学 工学府海洋システム工学専攻 講義資料 担当：木村06. 立体データの表現

コンピュータグラフィックス（ＣＧ）で３次元立体データを表現

３ＤデータがＣＧを描画するアプリやプログラム言語に依存
３Ｄ立体データは「点の座標だけ」のような単純な構造ではない
ＣＧ描画アプリやプラットフォームに依存しない３Ｄデータ表現は？
【参考文献】X3Dグラフィックス, 広内哲夫著， 株式会社カットシステム

３次元形状のデータ表現方法

中身の詰まった立体形状を表現
プリミティブ立体の論理演算（加減算など）でモデリングする
ＣＡＤでは最も良く用いられる

和差積【参考文献】 http://d-engineer.com/3dcad/3dmsyurui.html

面を張って立体形状を表現する
面には厚みが無く、一般に容積や重心などは計算できない
ＣＧで良く用いられるおよび ウィキペディア

線分によって針金細工のように立体形状を表現
立体の頂点や稜線の情報を持つが面や体積などの情報を持たない

板殻構造物である船舶用ＣＡＤは
ポイントクラウド（点群）
これがメインレーザスキャナ等による（板厚の情報は面の属性として保持） ３Ｄ観測データ

仮想現実モデル記述言語：VRML （Virtual Reality Modeling Language）
・コンピュータ・グラフィクスで３次元の立体を表現するためのファイルフォーマット
・アニメーションも表現できる・テキストファイルにて作成 （拡張子はwri）
・WWWで利用されることを前提、1994年にVRML1.0がWeb3Dコンソーシアムにより策定
その後VRML97 (ISO／IEC14772-1)に改良された・VRMLの表現能力の限界などから、次世代としてXMLベースのX3Dが登場

鋼板仕分場

VRMLファイルの例
マークアップ言語ではない#VRML V1.0 ascii
Separator{
ShapeHints{
vertexOrdering CLOCKWISE
shapeType UNKNOWN_SHAPE_TYPE
faceType UNKNOWN_FACE_TYPE
creaseAngle 0.0}
DEF BackgroundColor Info{string "0.000000 0.000000 0.000000"}
DEF Default_View PerspectiveCamera{position 8150.783003 3924.765539 -5466.294460
orientation -0.590284 -0.769274 -0.244504 0.987861
focalDistance 6628.960341
heightAngle 0.049209}
DEF view_1 PerspectiveCamera{仮想現実モデル記述言語：X3D（Extensible 3D） VRMLの後継･ VRML97規格を包含した国際標準規格 ISO/IEC-19775-1
・ マルチメディア・Javascriptなどとの結合、ＨＴＭＬへの埋め込み等に対応・XMLベースのテキストファイルにて作成 （拡張子はx3d）
３Ｄファイル変換のための中間フォーマットとしても期待
・無料のX3Dビューワが利用可能
・VRML同様、ＣＧとして表示することだけを目的としているので現実に存在できない形状もとりうる

3Dのオブジェクトをクリックすると関連付けられたHTML文
書がブラウザで表示

X3Dによる立体記述手順

背景色や視点を設定 Sceneタグ（１）プリミティブ立体（球／Box／円柱／円すい／文字／押し出し図形／ポリゴン図形）
について寸法や形状を決めて生成
Sphere／Box／Cylinder／Cone／Text／Extrusion／ElevationGrid／IndexedFaceSet要素（２）生成した立体に対し表面の質感を設定（色／反射度合／発光度合／透明度／テクスチャー）
Appearanceタグ中のMaterial要素（３）生成した立体を配置（平行移動／拡大縮小／回転）Transformタグ： translation／scale／rotation 属性
必要な個数分繰り返し

必要に応じ、複数の立体をまとめて配置
Transformタグ： translation／scale／rotation 属性

X3Dの記述例

XML宣言

DOCTYPE宣言<?xml version="1.0"?><!DOCTYPE X3D PUBLIC “ISO//Web3D//DTD X3D 3.2//EN” "http://www.web3d.org/specifications/x3d-3.2.dtd"><X3D><Scene>プリミティブ立体（Box）を生成して<Background skyColor="0 1 1" />色付け、平行移動<Transform translation=' -500 -500 -500' scale =' 1 1 1 ' ><!-- Box --><Transform translation="1000.0 1000.0 2100.0"><Shape><Box size="900.0 900.0 1200.0"/><Appearance><Material diffuseColor='0.5 0.5 0.5' emissiveColor='' transparency='0'/></Appearance></Shape></Transform>

移動・回転・拡大縮小
Ｘ３Ｄ本体<!-- Sphere --><Transform translation=" 2000 1000 500 "><Shape><Sphere radius ="500.0" /><Appearance><Material diffuseColor='1 0 0' emissiveColor='' transparency='0'/></Appearance></Shape></Transform></Transform></Scene></X3D>

プリミティブ立体（球）を生成して色付け、平行移動

STL（Stereo lithography）･ ３Ｄ CADソフト用ファイルフォーマットの１つ
３Ｄプリンタで造形する入力ファイル形式として一般的
・ ３角形（facet）の集合として立体を表現（サーフェスモデル）
ただし下図の右側のように隣接する３角形の頂点を共有しない表現はＮＧ

・実在可能な立体としては３角形で囲まれた領域が閉じている必要がある
閉じた領域が物体の「中身」

・１つ１つの３角形はそれを表現する
頂点 の並びによって面の裏表を表す（反時計方向に回転する頂点の並びが表）・基本的にポリゴン形状だけの表現だが、facet毎に色の指定をする場合がある

STLファイルの構成（アスキー形式はテキストファイル）

solid...
facet normal 0.00 0.00 1.00
outer loop
vertex 2.00 2.00 0.00
vertex -1.00 1.00 0.00
vertex 0.00 -1.00 0.00
endloopendfacet...
endsolid

アスキー形式ではファイル容量が大きくなりすぎるためバイナリ形式もあるフライス加工による３Ｄ立体の造形「エンドミル」と呼ばれる刃物を回転させて材料を削り造形
× 造形可能な形状に制約あり
× 大量の削りかす発生「上に凸」な立体なら造形可能だが…
「逆テーパー」や中空な形状は造形できない３Ｄプリンタによる３Ｄ立体の造形
立体データをスライスした断面形状を積層して造形していく
造形できる形状の制約は小さいが、材料に制約がある

光造形法
光を照射すると硬化する樹脂を積層 光硬化樹脂は高価
６０万円台から数千万円台まで精度によっていろいろ粉末法
粉末をレーザで焼結したり接着剤で固めて積層 一般に脆くなるが着色が容易

熱溶融積層法熱可塑性樹脂を加熱して細いノズルから押し出して積層積層方向に直交する方向の強度は大きい
１０万円台の最も普及している３Ｄプリンタはこのタイプ

材料はＡＢＳかＰＬＡ

シート積層法カッティングプロッタで切り込みを入れた紙を積層
金属シートを積層して超音波で圧着するなどもある

インクジェット法
インクジェットプリンターでインクを積層私見だが、実験用ロボット試作に要する工作時間が今まで１ヶ月以上かかっていたものが３Ｄプリンタで１週間-3日程度にまで短縮

３Ｄプリンタ造形時のSTLデータのスライス作業について
STLはサーフェスモデル

どの領域が物体の内側なのかについての情報を持っていない「ＳＴＬで表された立体は、３角形で囲まれた領域が閉じている」

2

1

12

4
3

「閉じた領域」の境界と交差する直線の交点は必ず偶数個任意の点からスタートした直線が、境界面と偶数回交差している場合、その点は領域外
奇数回交差している場合は領域内

この性質を利用して物体内側を判定・造形

複数の「閉じた領域」が交差＝意図せぬ中空

閉じた領域内に厚みの無い平面が混入

造形不能なデータの例

現実に存在できるかどうかを意識していないＣＧモデル（VRMLやX3D）では上記のSTLの条件を満たさず、単なる変換だけでは造形できないケースあり注意ポイントクラウド（ＰＣＤ：point cloud data）ファイルフォーマット
・レーザースキャナやキネクトのような深度計測デバイスで観測される３次元点群データの書式
自動車の自動運転や自律ロボットの研究等で普及
・基本的に点のxyz座標の集合で表されるが、色を含む場合もある
・PCL（Point Cloud Library） http://pointclouds.org/
レジストレーションに様々な点群処理を行うプログラムが無料にて利用可能
平面検出etc..

キネクトを手に持って周囲を廻り、多方向から高速に形状計測重ね合わせ
レジスト
レーション

点群データからＣＡＤデータを作成するのは大変難しいがARMONICOSという商用ソフトが存在する

PCDファイルの例# .PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4TYPE F F F F
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06
0.81915 0.32 0 4.2108e+06
0.97192 0.278 0 4.2108e+06
0.944 0.29474 0 4.2108e+06
0.98111 0.24247 0 4.2108e+06
0.93655 0.26143 0 4.2108e+06
0.91631 0.27442 0 4.2108e+06
0.81921 0.29315 0 4.2108e+06
0.90701 0.24109 0 4.2108e+06
0.83239 0.23398 0 4.2108e+06

まとめ（１） 3D形状の表現方法： (1) ワイヤーフレームモデル (2)サーフェスモデル (3)ソリッドモデル(0) ポイントクラウド（点群）（２） 仮想現実モデル記述言語： VRML（古い）、X3D（XMLベースでVRMLの後継）
コンピュータに表示することだけを意図しているので現実には作れない形状かも（３） STL: CAD用ファイルフォーマットの１つ／３Ｄプリンタで造形
立体表面を多数の３角形で包み込んで形状表現
領域は閉じていなければならない（４） ３Ｄ立体の造形方法： フライス加工／３Ｄプリンタ（５） ポイントクラウド： PCD

X3Dで記述し、X3Dビューワで表示して確認せよ。（BS Contactを推奨）
レポート課題：自分の興味のある立体をまたその立体のどのような点に興味を惹かれたのか, １行でも良いので説明を添付せよ。

【提出方法】
上記の説明を、課題のx3dファイル内の最初のあたりにコメント文として記述し、x3dファイルを下記の課題提出用フォルダへ、課題の番号と提出者が分かるようにファイル名を以下のようにしてアップロードせよ
第6回2TE19xxxZ名前.x3d
https://share.iii.kyushu-u.ac.jp/public/hROwAAqIPI5ATI4BUXJtIJeJbMLJzVszfitNl89GHcMK
上記フォルダへのリンクは下記ホームページから
http://sysplan.nams.kyushu-u.ac.jp/gen/edu/NavalInformationProcessing/2019/index.html
また上記の講義ページのＵＲＬにアップロードされているX3Dのテンプレートを利用せよ