ManipulateShapesAtWill

-- Views

October 17, 25

スライド概要

2025/10/16 LODGE XR “Tech” Talk - visionOSでの発表資料です

profile-image

岐阜の山中でヒキコモリ系プログラマー WindowsとiOSの間で生きる何か C/C++/Java/C#/Obj-C/Swift/F#/Haskell/Rustで生きている

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

カタチ を 自在に操 る 2025/10/16 LODGE XR “Tech” Talk - visionOS @ta̲ka̲tsu

2.

自己紹介

3.

自己紹介 岐阜県出身 岐阜県在住 フリーランスエンジニア 元CAD/CAM系エンジニア エンジニアと人生コミュニティに生息 @ta̲ka̲tsu

5.

趣味で砂鉄から鉄をつくっています

6.

visionOSでのカタチ

7.

・Model3D usdzをロードして表示

8.

・Model3D usdzをロードして表示 ・RealityView usdzやrcprojectから作ったEntityを追加して表示

9.

・Model3D usdzをロードして表示 ・RealityView usdzやrcprojectから作ったEntityを追加して表示 ModelComponentを持つEntityを追加して表示

10.

・Model3D usdzをロードして表示 ・RealityView usdzやrcprojectから作ったEntityを追加して表示 ModelComponentを持つEntityを追加して表示 →MeshResource(形状)とMaterial(質感)からなる

11.

・Model3D usdzをロードして表示 ・RealityView usdzやrcprojectから作ったEntityを追加して表示 ModelComponentを持つEntityを追加して表示 →MeshResource(形状)とMaterial(質感)からなる

12.

・MeshResourceを作るには generateBox generatePlane generateSphere generateCone generateCylinder generateText 曲線(Path)の押し出し

13.

・MeshResourceを作るには generateBox generatePlane generateSphere generateCone generateCylinder generateText 曲線(Path)の押し出し 自分で作成

14.

自分で作成

16.

自分で設定

17.

たくさん! たいへん!

18.

パラメトリック曲面表現

19.

パラメトリック曲面表現 x = f(u, v) y = g(u, v) z = h(u, v) 2つのパラメータを入力し 3次元の点を出力する関数を決める

20.

パラメトリック曲面の例:球 x = r sin u cos v y = r sin u sin v z = r cos u 0≤u≤π 0 ≤ v ≤ 2π

21.

パラメータを離散的に取れば 三角形の頂点が計算できる!

22.

パラメータを離散的に取れば 三角形の頂点が計算できる!

23.

関数の偏微分を取れば 法線も計算できる! (接線の外積を取る)

25.

荒く描画するか

26.

荒く描画するか

27.

荒く描画するか 細かく描画するかも

28.

荒く描画するか 細かく描画するかも 自由自在!

29.

Bezier曲面

30.

の前に

31.

Bezier曲線

32.

(3次)Bezier曲線 C1 C0 C3 C2

33.

(3次)Bezier曲線 C1 C0 制御点と呼ばれる点列 C3 C2

34.

(3次)Bezier曲線 C1 1−t C0′    C0 t C3 t C1′ 1−t C2′ 1−t 隣り合う制御点を t:1-tで分割 t C2

35.

(3次)Bezier曲線 C1 C3 C1′ C2′ C0′    C0 新しい点列ができる C2

36.

(3次)Bezier曲線 C1 C0′        C0 C0′′ C3 C1′ 繰り返す C1′′ C2′ C2

37.

(3次)Bezier曲線 C1 C0′        C0 C0′′ C3 C1′ C1′′ C2′ C(t) 最後の点が パラメーターtに対応する点 C2

38.

(3次)Bezier曲線 tを0から1まで動かす

39.

(3次)Bezier曲線 その軌跡がベジエ曲線

40.

(3次)Bezier曲線 Bezier曲線は 制御点によって形が決まる

41.

(3次)Bezier曲線    C0′ = (1 − t)C0 + tC1 C1′ = (1 − t)C1 + tC2 C2′ = (1 − t)C2 + tC3

42.

(3次)Bezier曲線            C0′ = (1 − t)C0 + tC1 C1′ = (1 − t)C1 + tC2 C2′ = (1 − t)C2 + tC3 C0′′ = (1 − t)C0′ + tC1′ C1′′ = (1 − t)C1′ + tC2′

43.

(3次)Bezier曲線 C0′ = (1 − t)C0 + tC1 C1′ = (1 − t)C1 + tC2 C2′ = (1 − t)C2 + tC3 C0′′ = (1 − t)C0′ + tC1′ C1′′ = (1 − t)C1′ + tC2′                C(t) = (1 − t)C0′′ + tC1′′

44.

(3次)Bezier曲線 C0′ = (1 − t)C0 + tC1 C1′ = (1 − t)C1 + tC2 C2′ = (1 − t)C2 + tC3 C0′′ = (1 − t)C0′ + tC1′ C1′′ = (1 − t)C1′ + tC2′ C(t) = (1 − t)C0′′ + tC1′′ 3 2 2 3                C(t) = (1 − t) C0 + 3t(1 − t) C1 + 3t (1 − t)C2 + t C3 (0 ≤ t ≤ 1)

45.

(n次)Bezier曲線 C0, C1, …, Cn を制御点として

46.

(n次)Bezier曲線 C0, C1, …, Cn を制御点として n i n−i C(t) = t (1 − t) Ci ∑(i) i=0 n (0 ≤ t ≤ 1) n n n! = ※ は二項係数で ( i ) i!(n − i)! (i)

47.

(n次)Bezier曲線 C0, C1, …, Cn を制御点として n i n−i C(t) = t (1 − t) Ci ∑(i) i=0 n (0 ≤ t ≤ 1)

48.

(n次)Bezier曲線 C0, C1, …, Cn を制御点として C(t) = n ∑ i=0 Bi,n(t)Ci (0 ≤ t ≤ 1) n i n−i Bi,n(t) = t (1 − t) をBernstein基底関数という (i) i = 0,1,…, n

49.

(3次の)Bernstein基底関数 3 2 2 3 C(t) = (1 − t) C0 + 3t(1 − t) C1 + 3t (1 − t)C2 + t C3

50.

(3次の)Bernstein基底関数 3 2 2 3 C(t) = (1 − t) C0 + 3t(1 − t) C1 + 3t (1 − t)C2 + t C3 B0,3(t) 3次のBernstein基底関数の0番目

51.

(3次の)Bernstein基底関数 3 2 2 3 C(t) = (1 − t) C0 + 3t(1 − t) C1 + 3t (1 − t)C2 + t C3 B0,3(t) B1,3(t) 3次のBernstein基底関数の1番目

52.

(3次の)Bernstein基底関数 3 2 2 3 C(t) = (1 − t) C0 + 3t(1 − t) C1 + 3t (1 − t)C2 + t C3 B0,3(t) B1,3(t) 3次のBernstein基底関数の2番目 B2,3(t)

53.

(3次の)Bernstein基底関数 3 2 2 3 C(t) = (1 − t) C0 + 3t(1 − t) C1 + 3t (1 − t)C2 + t C3 B0,3(t) B1,3(t) 3次のBernstein基底関数の3番目 B2,3(t) B3,3(t)

54.

(3次の)Bernstein基底関数 3 2 2 3 C(t) = (1 − t) C0 + 3t(1 − t) C1 + 3t (1 − t)C2 + t C3 B0,3(t) B1,3(t) B2,3(t) B3,3(t) 各制御点にtの関数をかけて足し合わせたものと見做せる

55.

そ こ 今度 Bezier曲面

56.

(3次x3次)Bezier曲面

57.

(3次x3次)Bezier曲面 C0,3 C1,3 C2,3 C3,3 C0,2 C1,2 C2,2 C3,2 C0,1 C1,1 C2,1 C3,1 C0,0 C1,0 C2,0 C3,0

58.

(3次x3次)Bezier曲面 C0,3 C1,3 C2,3 C3,3 C0,2 C31,2 3 C2,2 C3,2 S(u, v) = Bi,3(u)Bj,3(v)Ci,j ∑∑ i=0 j=0 C0,1 C1,1 C2,1(0 ≤ uC≤3,11) C0,0 C1,0 C2,0 (0 ≤ v ≤ 1) C3,0

59.

(3次x3次)Bezier曲面 C0,3 C1,3 C2,3 C3,3 C0,2 C31,2 3 C2,2 C3,2 S(u, v) = Bi,3(u)Bj,3(v)Ci,j ∑∑ i=0 j=0 C0,1 C1,1 C2,1(0 ≤ uC≤3,11) C0,0 C1,0 C2,0 (0 ≤ v ≤ 1) C3,0

60.

(3次x3次)Bezier曲面 C0,3 C1,3 C2,3 C3,3 C0,2 C31,2 3 C2,2 C3,2 S(u, v) = Bi,3(u)Bj,3(v)Ci,j ∑∑ i=0 j=0 C0,1 C1,1 C2,1(0 ≤ uC≤3,11) C0,0 C1,0 C2,0 (0 ≤ v ≤ 1) C3,0

61.

(3次x3次)Bezier曲面 C0,3 C1,3 C2,3 C3,3 C0,2 C31,2 3 C2,2 C3,2 S(u, v) = Bi,3(u)Bj,3(v)Ci,j ∑∑ i=0 j=0 C0,1 C1,1 C2,1(0 ≤ uC≤3,11) C0,0 C1,0 C2,0 (0 ≤ v ≤ 1) C3,0

62.

(3次x3次)Bezier曲面 C0,3 C1,3 C2,3 C3,3 C0,2 C31,2 3 C2,2 C3,2 S(u, v) = Bi,3(u)Bj,3(v)Ci,j ∑∑ i=0 j=0 C0,1 C1,1 C2,1(0 ≤ uC≤3,11) C0,0 C1,0 C2,0 (0 ≤ v ≤ 1) C3,0

63.

(3次x3次)Bezier曲面 C0,3 C1,3 C2,3 C3,3 S(u, v) = B0,3(u)B0,3(v)C0,0 + B1,3(u)B0,3(v)C1,0 + B2,3(u)B0,3(v)C2,0 + B3,3(u)B0,3(v)C3,0 +B0,3(u)B1,3(v)C0,1 + B1,3(u)B1,3(v)C1,1 + B2,3(u)B1,3(v)C2,1 + B3,3(u)B1,3(v)C3,1 C0,2 C1,2 C2,2 C3,2 +B0,3(u)B2,3(v)C0,2 + B1,3(u)B2,3(v)C1,2 + B2,3(u)B2,3(v)C2,2 + B3,3(u)B2,3(v)C3,2 +B0,3(u)B3,3(v)C0,3 + B1,3(u)B3,3(v)C1,3 + B2,3(u)B3,3(v)C2,3 + B3,3(u)B3,3(v)C3,3 C0,1 C1,1 C2,1 C3,1 C0,0 C1,0 C2,0 C3,0 (0 ≤ u ≤ 1) (0 ≤ v ≤ 1)

64.

(3次x3次)Bezier曲面

65.

(3次x3次)Bezier曲面

66.

(3次x3次)Bezier曲面

67.

Vision Proで表示

69.

OriginalMesh https://github.com/ta-ka-tsu/OriginalMesh

70.

Bezier曲面の限界と拡張

71.

Bezier曲面の限界 ・球面や円柱などの曲面を正確に記述できない

72.

Bezier曲面の限界 ・球面や円柱などの曲面を正確に記述できない →有理Bezier曲面に拡張することで解決できる

73.

Bezier曲面の限界 ・球面や円柱などの曲面を正確に記述できない →有理Bezier曲面に拡張することで解決できる ・一つの制御点の変更が曲面全体に影響する

74.

Bezier曲面の限界 ・球面や円柱などの曲面を正確に記述できない →有理Bezier曲面に拡張することで解決できる ・一つの制御点の変更が曲面全体に影響する →NURBS曲面に拡張することで局所変形が可能 (NURBS=Non Uniform Rational B-Spline)

75.

参考文献 Les Piegl, Wayne Tiller著 The NURBS Book 2nd Edition