From dcc826ed18dd58a59d2ebf94aa40217209ada3fd Mon Sep 17 00:00:00 2001 From: Janine Liu <32226860+j9liu@users.noreply.github.com> Date: Tue, 21 May 2024 10:09:06 -0400 Subject: [PATCH 01/17] Update README.md --- .../2.0/Vendor/EXT_primitive_voxels/README.md | 101 ++++++++++++------ 1 file changed, 71 insertions(+), 30 deletions(-) diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md index 051903406b..004d7b13aa 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md @@ -8,6 +8,8 @@ - Daniel Krupka, Cesium - Ian Lilley, Cesium - Sean Lilley, Cesium +- Janine Liu, Cesium +- Jeshurun Hembd, Cesium ## Status Draft @@ -17,7 +19,74 @@ Written against the glTF 2.0 specification. ## Overview -This extension allows primitives to use their attribute data to represent volumetric (voxel) data. +This extension allows mesh primitives to represent volumetric (voxel) data via custom attributes and new primitive modes. + +Voxels are often associated with cubic geometry on a box-based grid. However, with this extension, voxels may be based on other grid geometries. As such, the extension adds three new primitive modes: +- `0x80000000` (`2147483648`) - A box. The grid is based on equally-sized boxes. +- `0x80000001` (`2147483649`) - A cylinder. The grid is a stack of concentric rings, divided evenly around the circumference. +- `0x80000002` (`2147483650`) - An ellipsoid. The grid is a set of concentric ellipsoids, divided evenly in latitude and longitude. + +The lowest byte is reserved for future voxel modes: `0x80000000`-`0x800000FF`. + +Primitives with the `EXT_primitive_voxels` extension may still be affected by node transforms to position, orient, and scale the voxel grid as needed. The `POSITION` attribute is _not_ required or used by this extension. Positioning is derived through the node transforms in combination with the properties on the extension. + +## Voxel Geometry + +A voxel grid is defined in "unit" objects centered at the origin, contained in a bounding box between `(-1, -1, -1)` and `(1, 1, 1)`, as shown below. + +|Box|Cylinder|Ellipsoid| +| ------------- | ------------- | ------------- | +|![Rectangular Voxel Grid](figures/box.png)|![Cylindrical Voxel Grid](figures/cylinder.png)|![Ellipsoid Voxel Grid](figures/sphere.png)| + +This extension contains properties applicable to each grid shape that is used for the data. The geometry specified by the primitive's `mode` affects how the values are interpreted. + +``` +"EXT_primitive_voxels": { + "dimensions": [8, 8, 8], + "bounds": { + "min": [0.25, 0.5, 0.5], + "max": [0.375, 0.625, 0.625] + }, + "padding": { + "before": [1, 1, 1], + "after": [1, 1, 1] + } +} +``` + +### Bounds + +The `bounds` property describes the world-space bounds of the whole voxel primitive. The `bounds.min` and `bounds.max` apply to the voxel geometry in the following ways. + +| Shape | Meaning | +| ----- | -------- | +| Box | [x, y, z] | +| Cylinder | [ radius, angle, height] | +| Ellipsoid | [longitude, latitude, height] | + +#### Box + +For box geometry, the `bounds` refer to the minimum and maximum corners of the voxel grid. These represent positions given in world space. The `bounds` provides a method of specifying the scale of the grid, without requiring a node `transform`. + +[](TODO) + +#### Cylinder + +For cylinder geometry, the `bounds` refer to the slice of the cylinder that voxel data occupies. For instance, between `(0, -1, -pi)` and `(1, 1, pi)` +- Ellipsoids: a surface patch with height, between `(-pi, -pi/2, 0)` and `(pi, pi/2, 1)` + +### Dimensions + +The `dimensions` property refers to the number of subdivisions in the volume specified by `bounds`. Each value must be nonzero. Elements are laid out in memory on a first-axis-contiguous basis. For instance, with box-shaped voxels, the `x` data is contiguous (up to stride). + +### + +The `padding` property specifies how many rows of attribute data in each dimension come from neighboring grids. This is useful in situations where the primitive represents a single tile in a larger grid, and data from neighboring tiles is needed for non-local effects e.g. trilinear interpolation, blurring, antialiasing. `padding.before` and `padding.after` specify the number of rows before and after the grid in each dimension, e.g. a `padding.before` of 1 and a `padding.after` of 2 in the `y` dimension mean that each series of values in a given `y`-slice is preceded by one value and followed by two. + +The padding data must be supplied with the rest of the voxel data - this means if `dimensions` is `[d1, d2, d3]`, `padding.before` is `[b1, b2, b3]`, and `padding.after` is `[a1, a2, a3]`, the attribute must supply `(d1 + a1 + b1)*(d2 + a2 + b2)*(d3 + a3 + b3)` elements. + +### Example + ``` { @@ -26,7 +95,7 @@ This extension allows primitives to use their attribute data to represent volume "primitives": [ { "attributes": { - "_TEMPERATURE": 1 + "_TEMPERATURE": 0 }, "mode": 2147483648, "extensions": { @@ -49,34 +118,6 @@ This extension allows primitives to use their attribute data to represent volume } ``` -The extension adds three new primitive modes, corresponding to voxel grid geometries: -- `0x80000000` (`2147483648`) - A Cartesian box. The grid is a Cartesian grid of equally-sized boxes. -- `0x80000001` (`2147483649`) - A cylinder. The grid is a stack of concentric rings, evenly divided around the circumference. -- `0x80000002` (`2147483650`) - An ellipsoid. The grid is a set of concentric ellipsoids, divided evenly in latitude and longitude. - -The lowest byte is reserved for future voxel modes: `0x80000000`-`0x800000FF`. - -|Box|Cylinder|Ellipsoid| -| ------------- | ------------- | ------------- | -|![Rectangular Voxel Grid](figures/box.png)|![Cylindrical Voxel Grid](figures/cylinder.png)|![Ellipsoid Voxel Grid](figures/sphere.png)| - -These grids all define "unit" objects centered at the origin, contained in the bounding box between `(-1, -1, -1)` and `(1, 1, 1)`. Node transforms should be used to position, orient, and scale the voxel grid as needed. The `POSITION` attribute is _not_ required or used by this extension - all positioning is through node transforms. - -The `dimensions` property of the extension specifies the voxel grid dimensions: -- x / y / z for boxes -- radius / height / angle for cylinders -- longitude / latitude / height for ellipsoids - -Dimensions must be nonzero. Elements are laid out in memory first-axis-contiguous, e.g. for boxes, `x` data is contiguous (up to stride). - -The `bounds` property describes which section of the primitive is mapped to the voxel grid. `bounds.min` and `bounds.max` specify a "rectangular" region of the voxel grid in the appropriate coordinate systems: -- Boxes: a rectangular region of the box, between `(-1, -1, -1)` and `(1, 1, 1)`. **This is essentially a no-op - prefer using node transforms for boxes**. -- Cylinders: a slice of the cylinder, between `(0, -1, -pi)` and `(1, 1, pi)` -- Ellipsoids: a surface patch with height, between `(-pi, -pi/2, 0)` and `(pi, pi/2, 1)` - -The `padding` property specifies how many rows of attribute data in each dimension come from neighboring grids. This is useful in situations where the primitive represents a single tile in a larger grid, and data from neighboring tiles is needed for non-local effects e.g. trilinear interpolation, blurring, antialiasing. `padding.before` and `padding.after` specify the number of rows before and after the grid in each dimension, e.g. a `padding.before` of 1 and a `padding.after` of 2 in the `y` dimension mean that each series of values in a given `y`-slice is preceded by one value and followed by two. - -The padding data must be supplied with the rest of the voxel data - this means if `dimensions` is `[d1, d2, d3]`, `padding.before` is `[b1, b2, b3]`, and `padding.after` is `[a1, a2, a3]`, the attribute must supply `(d1 + a1 + b1)*(d2 + a2 + b2)*(d3 + a3 + b3)` elements. ## Optional vs. Required This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. From 010764031c8d629b2fed0d5a34cd7d682d6a0aeb Mon Sep 17 00:00:00 2001 From: Janine Liu <32226860+j9liu@users.noreply.github.com> Date: Wed, 22 May 2024 14:37:55 -0400 Subject: [PATCH 02/17] Add box grid visuals --- .../figures/non-uniform-box.png | Bin 0 -> 69136 bytes .../figures/uniform-box.png | Bin 0 -> 67879 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/figures/non-uniform-box.png create mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/figures/uniform-box.png diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/figures/non-uniform-box.png b/extensions/2.0/Vendor/EXT_primitive_voxels/figures/non-uniform-box.png new file mode 100644 index 0000000000000000000000000000000000000000..281bd055986bc8b859317281fca421351216c03e GIT binary patch literal 69136 zcmeFZg_veIJLt`J>8AQ0D{J$;NsATF^Z5a-q~ z&cmNr33pDwzc4MID%&6sl)upboRg)T-$NkoBAz{d_}npedDKDag<_TP$rG_;@!&D+ zr`IoD$NK#4Jbhc%KO7$meaV|8*`xGS*rPPrJ8TTh^;c)~KT1-wHB?e^Jt{kN)R%_uT*cZ}d+5U$qaq^~Z<1r@vE$pT$AsPI!C@M+Y$Cr)z(< z=IKm`%=z=@ySlnW9z7~HAEmdu2Y>aMla=+Z-6iyQAqbh<+S>ft8V2I{9WHg4nVInh zPV<EJ!!Epu{;pU0U%!6U@n0D!wORk!+gq5J`0%KwuFiA1WM)QBLZUUe z{W1cfOKMDq{$_-f&F0Lr1|a%1Uqi$Lo0+*e_J%-W-h0y2(y>qJP@zP3?%=q;eDvsouK)c0;qIDW zZC%~tz-d=kS5am*1j1kY3kv;C1jl!WakoZ71}3IkG^C`Ypi;H#7w6yM`Y-d}-WE{Ozi_I}- zpS!q}^Z37eH^F0ma}KG=(!v6+&(?fLYN)8FsL(K{SK~pb zIEn`o8+(q2nUC+lX&R100P%Mpqm9hWZe2+mF1GNiEh*s<|COPfAAfpq`}S>tj);f| zzmPQfRBPg5{kG`&Y982kjKA+2`jVBU?{79<<+jes#ukiRTw3BU*llTVpL05yX%3ls zOdUc+LqkJFb!{a8fzbLP!gLY6xKEeF#l;DAVc!U74h{~88|B1FNJxCvs-8S~BG55E zKktXf&(9Ah9(bRFgShGt&O+(cpR>?<-rCV&;C~Ar|2-Z91A{mns^`ZKQ$6-rKD+nx z`#*k2TIm=Y(}&83hlf*yz)o`D{5kzsa>nqK{<+<$GJbg6+}zq;q2b|uP4j6P88c2o zOiWU-3kwSvv!VIu+TrZr>Ez8?cSba;PlbaQL^}U0imuy2Sb>+6}v$@ap3gl&z~tJ;Q*3||K13r zSV5O?wjzf$4Xe-T=?uiV^HWpzv~vu?gM+_sxjH$O@@(wx&hwaWFZSL@IgfZHhxO;& zzddE3r`PeHot^c?!@|N!{1DBm{l@dV_hSVG{En^q`ueH5+S<3%CCSN@nDXZk-)KGm zZsv@hzCL@yB}Fb~W@Zs`6nv(34!NR|Qqz{}!-ubVa`W@y%%^!CJ$i)R&Tk8^|GtlM zc_8;KoBd?XMXRa#c`-V-NiPCQNzM`JIKKKVSAG2y9yU(STP<`F5)x-`H2hDr5N>a8 zV~Q;o78Jaz<+YiU6;Db^qPoiUk)DCUDPBfG0*{7|k57bmc6pgmn-zihfd4mIv^xg} z>24yq%|~#3{0LZ5Lfd1wWoopLMuvtHPVw{m--X{&Qd3jY(73p`NDy8{Ad=twebje! zVd9A&h>rAK+M+o_kscl%m~R6v{d?@2v#q>=F+y%-p5Ng{%>2E!gzWR}ak~C1gZW~y zhDJu1{L$s*I2}c>8vLfyBmHzDH1f0fxSQA(l$ zRoFY!bet~E2a%SIDy7>=#kx2;S`tTuhEi&CK`Iyen+xNmJv^#&lALsPlXzk|P4H11 z%*@g?T8m%kj_Xi8M`L}WpPyvlvsg;_G8%oEajN?C>49rNTpUTG6>;NjA|i3ZTL^^r z-_U(UW4FEdBJo3+{mQAr@5hfH%Zk_5)Fii}!b4rPhXarJ6`4(z7FAi)7s7AwntzVk z>y=NH-VjKLilUR2l#&Vw34ud^puOpI4xzR1cQ5yx0s;a=$a}}fS+Ete)Sl5@yLvU0 zHFBtQ+(UD}ce3@@MF$IwUN(-X66eIj^kC-(9L-BFl$D#eTvb$}c{)2gueZ?A(4+>x zhj^&H`1h(zhekx)Z|LgozKj#{@gprNK0Y3aLW((9j3~H<4R5G_uM`T4_eGi2hy*DT zTsO;1IBqyNaGv~D^}W_^sn3ddeq}|_6#bL~f1lE^1dm3VwPD7(l!uLr3qNomhR5o& z=l7oW%p#L*&3QXgTEY?s#qpMQbGMR132hmdV2GZ?*hL5=pVkN#xXuT^e?7VlMMLz; z-)K+Zb6mfxyS%qCJyqAPT`w-SDUGJ(Y(jg!Uu=FJ;g6f7ZvHIi?UPkH#a zl*aC_`<}RX)pXL$*YOA>NmE=Mx&$$^QqHUC5-%(QaY9KFb>=UogCAY;^WNa3a4`23;?)_@60_f|u8+ z*83WTr2_)tsQ)Ldwfv3E&GE0K@jI-(t9{uTE+=mABa&R3)y|e~NfN8I8ddTXBR5jG z(M~tHG@%>AfR>ha!l^1JM>cj~a1e^44Y7fi7Hf?*)bMA2Fw!fw)URLPvlZFQw|}qQ zUh20Yo}ZnidO^?G8)`L$GHcW8)n4J<5J;Ng<>yv&BT*3?QfGSe+8Z4-wXu1}k`p|H1w z>FMbm<7H%I2x!X6${;h&aCEhnz{AP?IgW3UA7Wx!3HhyO-tpw-<|c+(6C0SCLh>xU zZ@E@Al|IsHguW%6Y#i|=d?SKX$c{SMMKv5bO-&Z!0dB_<^HILQ>59rqlsFWkzdgdI z$(_|v_?a#{89W>7>z_iaes@W9c_AenEXL56BsX~sM_nKg{c=6X6w^LXc85s$5C@Ltt z$Mf(w1%#WC3{Us$PZ&PHgW}KHP-HgDeUKt>{NG#kiySo0jv^5sAGMAm|eipoD1FuWh0o0}UN zXEirJgKWKE{SczOA|`Cs6F2|%!*&)irMArvd_6e~{|5H(unlpeRqX56uc20nHk8`T z)1m-)o$gHswf*?vzS#?S=6EB><404|K%t2u)HF)Whj0JxirouY*>8mK({O1N6cj|r zwR!0(C3sX|4si^Av`gZa=gz|H9gDJ@kS=G}3LBUI)(Cu)CtwB0L zh)H^6WW-ZMTvb)|tS(KT)g_4lPu%o+EH(Lik|Q+YB;x1u0S9xMC_H&`v11GBv*(A^ z)m0gx{h6%};dvfrUf#jZPPs*YL~Tt|6D@=i1;zCGWbJ)}_MZNJvZLOQA3qKa4MDqL zVq%hZaCGVrzed+ z2lRVI2BGRvPbar?E*2CQW6k!!9Xq>zP)~shpt^dAb>`BgOI#LXNAtp``(&qkVj?1M zcnFH(u3%vuwrZZ}=;={vi~M~4H+4Qg1G@m2sIZehf945{xo;4N{^Ze^%J=dcc+7d zx!BmqJ+EH9>bf&%;Bk65E_`~l6~>?_PJ+vU_qPt9ptT~@g+L?`@DB<~4V8{!fAU#& zadBsMsReFx)WzMywFT9o!Au;7RBfaWk_Hwi!rS}v=UwbaA|gD2wa$V+uhuloL(Afy z`|1^9bAjgY-zsC*9xvFswS2g?`yLNcia1@P6+qq_m*mB`!&a_Al_p`N^d#gf;i2^6 z&#tG>H;4!iZ`g8u`4U<*3=C-OdcVE^$VPa>y3}>LA;6+?yKmT{Ix{KB=4fvNuD$BrKP1)bu~32JUSLFJ^1f!Qo-`-V_!CL;C4K_Nk7) z*S7W56C!H9TeDJd!FN0pS6 zWMyT=#an#H+)J#cMbjR=rtS{oJ4+G%a*zWd_cJjuO|kOuL?Vgs@F-jl=2%i_8V>ba zmhx;u6I|`}6%V{34R=cnW!&6|Nq6NV@;WqhoCNI%Fv;-~ZPd6#l_bC8*Ha`G7H&hy zdP@U1E|mW2Hydjk8?0;Bm>3wAmY0A3{(be@wJ^TxhCCT(9sR4|zTRG{o5<18(J9M~ zsrt|^r>!}`->L@(t1p|E*k@Y;168LRm+BvvHa=-(WNHj}J|mY&H{B?awqF@Rgh8(0 zM^KXTII<)O|28IMm}#ezsd_)*sBDeOgKin&Fv=U>w)mZY8;XdWC!eV&&^%hN#kqFv z8cO<~=&R{x9ER2m?VpaOwX-)}QC{3@tBI`s+XI8%E7>m?DzN7{^_p+pb}?q(>3Pg# z9}o~;S{jYxu`VZGTKL7xePi-|-q=9b^6{JqA(z)|6V>o$iwW|P@gCMM}TuvGOb z*L?_WCT-SNHlnN_&#-fy!elcFxIjw`x`xi~3)AB|D8z3RWx#}tNo zycngkGLQp%t>?cX;ITC)WkpCr(q^S*X=$md8sj;L@D{hQ$QDOk!N!gkA~A5N$@$y; z)GiI=>iXwC^1=4Slb4rI{E%1V-oQ-f82)IT(dYfwEXLBQh1_s5X|-s+UU~?|8_PV8 z)5OxsziP}Xmae#5S=}D%xu0u0RMG&rNR@!!>{_`G^KZZZWS<%>#G_RRK3XOwx24SD zjEs!r_Vdv=fBJ~41f^>2g#1=ho;+5TmJ>XINMkLn^`rjXt-{T%LUI4y=8yd^=X)Z; z>`F`3-vxv}VRC*ytGGC2@8WQrGSYtGZ#v^kVYExdO2+1-4h;)qYk=xh=UY_7h33K( z6%~J3pS$V@TYGfmdgo3Iz#DXenSM3*cm0o8n3w|C6wu%rh%Q>xQeWnsO&4DNsH*rI zk%Vh8bc%YdVF?~`Wek~oTn&O;L$!vn)D@#I=!Tc7+n4y1o}#-5D|8pZFSaPFTZ1Ef z^o_8!x%oOxN=k}I_WKuHy&DORcywQm{ zXp527_(v$i&T9H-c{UgO2o;yg+%Ii59kzJQ{pND5WSAs>fF=<0nytE*W}5zI7X$ zn%-1+y1l#WS9^;=!IGGOkdRiJRpe>&uOi0MyqO;_MVd0A?5#TUz8T@60)FQYVKKxM z&x~f!(s)K*lyY$9t#K}b)Y#zpU%32CRu&g!yT3ULbYoFb(Wg&$MVc0S(}jDhWuGw^1G{!hfi5h`9k$glp#*y*yr15aW(b$@mkrDXN^>s@$ljDE! z&wfv&#qn6ZVWW;{t#5`l)ho_{TAJ9dHMpXZ+R>#=()GI{PtKafDeYjC2FaZjQi2t7 zyMois(2Z#{u^@2`0NfMpEV}E|?5b&xjH;lA#KJm8_YT@>YQ!kpz6|9vq|Yzf`N*}h zvXabwZxWC+26^@Iip99|5>px;P=bhWGJ++y3V@M7g(8j7NG6BIR^EPwxBgq%Ja?MxX3 zY4vcmQnz`pg5Qf!aRv-=F1t(zw_168T19tY`wkXroouW{5^D4=oX8H_k*14;>EaR+ zw{^$ecH?+DdwXXgfh;cji&39Lh!PpowZR|RtxtRh+7OB>4o;BA@scJ!{@#l_uxx?s z*RRh_KBPe*>97;*85ZPdxmqZ=TBa8^<|IpXJW|kK-(6D&2&01f*W-ol6noQ;=!@NC zzE_ULI8);hYicmL*aa75?c|Kz#328du7ZM#Arn7kb|3NTxvYfI`7rTqC_w81*~m0c zU!O+9L0a^t_b56z6w5xfv$ON9y@-V`E6%CUu<)}~I?*Ohyra;d<(8LNG*%GD<%`n( z0rm;JweC%8y~AUfBca1ipC;T-N!%n<8x_OLY_PnKnAh+An?$XxZzwzk^!^OZ-pNX& zRkpXc?~Z#2GcZUj-i6Qo#0!0``y7hya=8JK;YP#$tS@PS2tOX9}Y!{etpHk7gv9+m5%RekE%ok5n zQ&ZeXN9VI=8u0y|D&m!Jeb+`x<(HH1-MgpZvQh|e5-3n3h=0VZ=zk>+%j1LXP^5*0 zMH({TDo#|rs>MH4X!vn!khdl1)XCZ4;Ns*rp-}_3rd8)BHnnpVCSvY)Jqb%)_-lOoAdx7=aJGvKX9zrwY9Z$C@lPm;Ag-u zUoH%FmZ!b>;>8P3TwUGiLX-Z_A)r&dGWh?I4oGn+NlD79)QMKpw*48K8u=}UTIO!y zYQf=hap7_#c(eF-m~5=LT#j~&2oyNCoVZ(CG062FcE>@&iC^Kpm)2O&*QcQE^&AR4 zk6MxG?MADI50w%xAy~x|VH>7M=f}pz?CtHlywM?8m=6qj!vJ*W^}dqS(>$xF2#t@- zJqvl1U1rachkZjL*z@5Gw&81Qj;~I%HAS+>eZ4+&vkPA+J2lH2SBH&d;H7SI{qy~CCHtIa0@d6hKsinBH_+q3#@LlxBOsWiDTv=gaW*#fH(1dM(6iW^w%KrX7lSYN( zWQ~{1_ELEaw?#ak9Z=ZmSy|GKYcI{sNpW#;Z``Qhm>g_7;uEXqr(HO?-EiV<>j5?v(wY@Xu4CRl0vgo3dL)lC-ub+V%zBR zhbr1aL^cL$^4T9DUscp-U4efjRVeA_NmUBOD z$ItJs4AV$M!$ylDZsg_Rc}jToLFP)iqq)qp_|&Av%Ucl=aThtp7cx=MUP{OEZ1h*3 zY=i3ecK(W&NTTfWc(o>VNagX)FwiJvWx`vUox{WBX2V4uCtC@iHjrw9EZG&1h%!=Md-FaljUEb9e*FZ2hH1qB4jN^g|s>Md~2%2}AOb3A@!Q-SfH8nLLpsnLr8#V=T^%``s%N5;YW6aoacj-`m_)H&JBUK`& z3t$`W(=C9*z{We7V|$Y9%N~JtiDfej4|D>(;GXYz>>6 zn{~cW>T_;IM-6reyu?HVb=vHULh?aeFoEbbdvDCGXZQnv8iMCqRtr#V7!Bxh}H-O}1Byf^U{Hsf*x z3rKx(;;k($P$l4XTX(Jcv?@5b^KHM8x%tUvD~s2_vuDqQONU0w9kSI*@42hU%iHX4 zzC7a)SkD8YftH#;VN)e;XlOu+8+612qA#3Y)Y)n6Kabbvn0i9BrnGX)D{$3OJv-;; zt7{(bIdVypRILJ%Gcp((2AV@?>V4DG({n@?(jS)cDOh=mSItF&JZX-vF&dqoSJHDUneF$ znm`E%3W5Z*S3Z6$jY6VQQh+0J10hzp)X2hO4ek%LjZLS_Z#@j{sECB!E8^qF?w``3 zQ-*-A&uT@;hYt_v+!l~ljuq%0AZ27{^kTQO#U&zDh08v%W!j;mj_DHtZz5@-WsEA^ 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 Date: Wed, 22 May 2024 15:25:28 -0400 Subject: [PATCH 03/17] Add cylinder grid visuals --- .../figures/cylinder-subdivisions.png | Bin 0 -> 83363 bytes .../figures/non-uniform-cylinder.png | Bin 0 -> 47819 bytes .../figures/uniform-cylinder.png | Bin 0 -> 45862 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/figures/cylinder-subdivisions.png create mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/figures/non-uniform-cylinder.png create mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/figures/uniform-cylinder.png diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/figures/cylinder-subdivisions.png b/extensions/2.0/Vendor/EXT_primitive_voxels/figures/cylinder-subdivisions.png new file mode 100644 index 0000000000000000000000000000000000000000..37ca35e6e70792d98d6c58303b2837df60a744ea GIT binary patch literal 83363 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%0AhpC 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 F_b1n{eLVmG literal 0 HcmV?d00001 diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/figures/non-uniform-cylinder.png b/extensions/2.0/Vendor/EXT_primitive_voxels/figures/non-uniform-cylinder.png new file mode 100644 index 0000000000000000000000000000000000000000..903ef95193899e2558ec4906f8c9031cb1ae3cd9 GIT binary patch literal 47819 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 literal 0 HcmV?d00001 diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/figures/uniform-cylinder.png b/extensions/2.0/Vendor/EXT_primitive_voxels/figures/uniform-cylinder.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee059ae0bcb51b87d5d43fac0fc1ba21c5334b1 GIT binary patch literal 45862 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 N?lb-~mwf8-{{aFjts4LU literal 0 HcmV?d00001 From 40ebbdb83c47d41add107d68f03e40862a557482 Mon Sep 17 00:00:00 2001 From: Janine Liu <32226860+j9liu@users.noreply.github.com> Date: Wed, 22 May 2024 17:08:44 -0400 Subject: [PATCH 04/17] Begin rewriting bounds property --- .../2.0/Vendor/EXT_primitive_voxels/README.md | 154 ++++++++++++++---- 1 file changed, 118 insertions(+), 36 deletions(-) diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md index 004d7b13aa..9fd78e8c92 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md @@ -19,74 +19,121 @@ Written against the glTF 2.0 specification. ## Overview -This extension allows mesh primitives to represent volumetric (voxel) data via custom attributes and new primitive modes. +This extension allows mesh primitives to represent volumetric (voxel) data via custom attributes. Primitives that use this extension must set their `mode` to the constant `0x80000000` (`2147483648`), which is used to indicate voxels. -Voxels are often associated with cubic geometry on a box-based grid. However, with this extension, voxels may be based on other grid geometries. As such, the extension adds three new primitive modes: -- `0x80000000` (`2147483648`) - A box. The grid is based on equally-sized boxes. -- `0x80000001` (`2147483649`) - A cylinder. The grid is a stack of concentric rings, divided evenly around the circumference. -- `0x80000002` (`2147483650`) - An ellipsoid. The grid is a set of concentric ellipsoids, divided evenly in latitude and longitude. +Typically, glTF mesh primitives use the `POSITION` attribute to store positional mesh data. However, `POSITION` is neither required nor used by this extension. Instead, `EXT_primitive_voxels` describe the positions and geometry of voxels using its own properties, and the attributes refer to what kind of data they represent. Primitives with this extension can still be affected by node transforms to position, orient, and scale the voxel grid as needed. -The lowest byte is reserved for future voxel modes: `0x80000000`-`0x800000FF`. - -Primitives with the `EXT_primitive_voxels` extension may still be affected by node transforms to position, orient, and scale the voxel grid as needed. The `POSITION` attribute is _not_ required or used by this extension. Positioning is derived through the node transforms in combination with the properties on the extension. - -## Voxel Geometry +``` +"primitives": [ + { + "attributes": { + "_TEMPERATURE": 0 + }, + "mode": 2147483648, + "extensions": { + "EXT_primitive_voxels": { + // geometric properties here + } + } + } +] +``` -A voxel grid is defined in "unit" objects centered at the origin, contained in a bounding box between `(-1, -1, -1)` and `(1, 1, 1)`, as shown below. +Although voxels are commonly associated with cubic geometry on a box-based grid, this extension allows voxels to be based on other types of grid geometry, including cylinders and ellipsoids, visualized below. |Box|Cylinder|Ellipsoid| | ------------- | ------------- | ------------- | -|![Rectangular Voxel Grid](figures/box.png)|![Cylindrical Voxel Grid](figures/cylinder.png)|![Ellipsoid Voxel Grid](figures/sphere.png)| +|![Box Voxel Grid](figures/box.png)|![Cylindrical Voxel Grid](figures/cylinder.png)|![Ellipsoid Voxel Grid](figures/sphere.png)| + +Each of these grids is defined by the respectively named properties within the extension: +- [`box`](#box-grid) +- [`cylinder`](#cylindrical-grid) +- [`ellipsoid`](#ellipsoidal-grid) + +Only **one** of these may be defined at a time. Within this geometry, voxels exist inside a bounding volume that conforms to the geometry of the grid, as described by the relevant property. -This extension contains properties applicable to each grid shape that is used for the data. The geometry specified by the primitive's `mode` affects how the values are interpreted. +The `dimensions` property refers to the number of subdivisions _within_ this bounding volume. Each value of `dimensions` must be a positive integer. + +The relationship between `dimensions` and the other aforementioned properties is explained in detail below. + +### Box Grid + +A **box** grid is a Cartesian grid defined by `x`, `y`, and `z` axes with equally-sized boxes. A voxel primitive that is based on a box grid may define the `box` property like so: ``` "EXT_primitive_voxels": { "dimensions": [8, 8, 8], - "bounds": { + "box": { "min": [0.25, 0.5, 0.5], "max": [0.375, 0.625, 0.625] - }, - "padding": { - "before": [1, 1, 1], - "after": [1, 1, 1] } } ``` -### Bounds +The `min` and `max` properties refer to the minimum and maximum positions that form the corners of the grid. These positions are given in the primitive's local space. The `dimensions` correspond to the subdivisions of the box along the `x`, `y`, and `z` axes respectively. + +![Uniform box grid](figures/uniform-box.png) +

A box grid spanning from -1 to 1 in all three axes, subdivided into two cells along each axis. The origin is in the center of the box.

+ +These properties may be used to define the scale of the box grid, independent of the `scale` applied by a node. Additionally, the `dimensions` may be non-uniform. -The `bounds` property describes the world-space bounds of the whole voxel primitive. The `bounds.min` and `bounds.max` apply to the voxel geometry in the following ways. +![Non-uniform box grid](figures/non-uniform-box.png) +

A box grid that is non-uniformly scaled due to its min and max properties. It is also non-uniformly subdivided.

-| Shape | Meaning | -| ----- | -------- | -| Box | [x, y, z] | -| Cylinder | [ radius, angle, height] | -| Ellipsoid | [longitude, latitude, height] | +### Cylindrical Grid -#### Box +A **cylinder** grid is subdivided along the radius, height, and angle ranges of the cylinder, visualized below. -For box geometry, the `bounds` refer to the minimum and maximum corners of the voxel grid. These represent positions given in world space. The `bounds` provides a method of specifying the scale of the grid, without requiring a node `transform`. +![Cylinder subdivisions](figures/cylinder-subdivisions.png) -[](TODO) +The cylinder is aligned with the `y`-axis in the primitive's local space. As such, the `height` range of the cylinder is specified in values along that local `y`-axis. Subdivisions along the `radius` are concentric, centered around the `y`-axis and extending outwards. The `angle` is defined in `pi` -#### Cylinder +A voxel primitive that is based on a cylinder grid may define the `cylinder` property like so: -For cylinder geometry, the `bounds` refer to the slice of the cylinder that voxel data occupies. For instance, between `(0, -1, -pi)` and `(1, 1, pi)` -- Ellipsoids: a surface patch with height, between `(-pi, -pi/2, 0)` and `(pi, pi/2, 1)` +``` +"EXT_primitive_voxels": { + "dimensions": [4, 4, 4], + "cylinder": { + "radius": [0.5, 1.25], + "height": [-1.0, 1.0], + "angle": [-1.57079632679, 1.57079632679] // [-pi/2, pi/2] + } +} +``` + +For instance, between `(0, -1, -pi)` and `(1, 1, pi)` + +| Axis | Coordinate | Positive Direction | +| ---- | ---------- | ------------------ | +| 0 | radius | From center (increasing radius) | +| 1 | height | From bottom to top (increasing height) | +| 2 | angle | From -pi to pi clockwise (see figure below) | + +[TODO](image) -### Dimensions +### Ellipsoidal Grid -The `dimensions` property refers to the number of subdivisions in the volume specified by `bounds`. Each value must be nonzero. Elements are laid out in memory on a first-axis-contiguous basis. For instance, with box-shaped voxels, the `x` data is contiguous (up to stride). +For **ellipsoid** geometry, the `bounds` refer to the section of the ellipsoid that the voxel data occupies. `(-pi, -pi/2, 0)` and `(pi, pi/2, 1)` -### + Elements are laid out in memory on a first-axis-contiguous basis. For instance, with box-shaped voxels, the `x` data is contiguous (up to stride). + + +contains minimum and maximum values along the axes and/or parameters that control the grid's shape. These ranges are interpreted relative to the geometry of the grid, as indicated by the primitive's `mode`. + +### Padding + +``` + "padding": { + "before": [1, 1, 1], + "after": [1, 1, 1] + } +``` The `padding` property specifies how many rows of attribute data in each dimension come from neighboring grids. This is useful in situations where the primitive represents a single tile in a larger grid, and data from neighboring tiles is needed for non-local effects e.g. trilinear interpolation, blurring, antialiasing. `padding.before` and `padding.after` specify the number of rows before and after the grid in each dimension, e.g. a `padding.before` of 1 and a `padding.after` of 2 in the `y` dimension mean that each series of values in a given `y`-slice is preceded by one value and followed by two. The padding data must be supplied with the rest of the voxel data - this means if `dimensions` is `[d1, d2, d3]`, `padding.before` is `[b1, b2, b3]`, and `padding.after` is `[a1, a2, a3]`, the attribute must supply `(d1 + a1 + b1)*(d2 + a2 + b2)*(d3 + a3 + b3)` elements. -### Example - +### Full Example ``` { @@ -117,7 +164,42 @@ The padding data must be supplied with the rest of the voxel data - this means i ] } ``` +### Metadata +This extension may be paired with the `EXT_structural_metadata` extension. + +{ + "extensions": { + "EXT_structural_metadata": { + + } + }, + "meshes": [ + { + "primitives": [ + { + "attributes": { + "_TEMPERATURE": 0 + }, + "mode": 2147483648, + "extensions": { + "EXT_primitive_voxels": { + "dimensions": [8, 8, 8], + "bounds": { + "min": [0.25, 0.5, 0.5], + "max": [0.375, 0.625, 0.625] + }, + "padding": { + "before": [1, 1, 1], + "after": [1, 1, 1] + } + } + } + } + ] + } + ] +} ## Optional vs. Required This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. From c805aafc893242e999e16d22110807c9940ecad6 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Thu, 30 May 2024 11:36:29 -0400 Subject: [PATCH 05/17] Add voxel grid geometry schemas --- .../{bounds.schema.json => box.schema.json} | 6 +- .../schema/cylinder.schema.json | 46 ++++++++++++ .../schema/ellipsoid.schema.json | 73 +++++++++++++++++++ ...primitive.EXT_primitive_voxels.schema.json | 18 ++++- 4 files changed, 136 insertions(+), 7 deletions(-) rename extensions/2.0/Vendor/EXT_primitive_voxels/schema/{bounds.schema.json => box.schema.json} (68%) create mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json create mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/bounds.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json similarity index 68% rename from extensions/2.0/Vendor/EXT_primitive_voxels/schema/bounds.schema.json rename to extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json index fbaefefe20..d77223606a 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/bounds.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "bounds.schema.json", - "title": "Bounds", + "$id": "box.schema.json", + "title": "Box", "type": "object", - "description": "The bounds property describes which section of the primitive is mapped to the voxel grid. bounds.min and bounds.max specify a rectangular region of the voxel grid in the appropriate coordinate system.", + "description": "The box property indicates that the voxels conform to a box-based grid. box.min and box.max represent the corners of the box grid in local coordinates.", "allOf": [ { "$ref": "glTFProperty.schema.json" diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json new file mode 100644 index 0000000000..c44f8c8c0b --- /dev/null +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "cylinder.schema.json", + "title": "Cylinder", + "type": "object", + "description": "The cylinder property indicates that the voxels conform to a cylindrical grid. Each sub-property defines the section of the cylinder that the grid actually occupies.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "radius": { + "type": "array", + "description": "The radial extents of the cylindrical grid in local space. The elements represent the minimum and maximum values respectively.", + "items": { + "type": "number", + "minimum": 0 + }, + "minItems": 2, + "maxItems": 2 + }, + "height": { + "type": "array", + "description": "The height extents of the cylindrical grid in local space. The elements represent the minimum and maximum values respectively.", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + }, + "angle": { + "type": "array", + "description": "The angular extents of the cylindrical grid in local space. Values must be in the range [-pi, pi]. The elements represent the minimum and maximum values respectively.", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": [ + "radius", + "height" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json new file mode 100644 index 0000000000..bae98f02e7 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "ellipsoid.schema.json", + "title": "Ellipsoid", + "type": "object", + "description": "The ellipsoid property indicates that the voxels conform to an ellipsoidal grid. Each sub-property defines the section of the ellipsoid that the grid actually occupies.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "radii": { + "type": "array", + "description": "The radii of the ellipsoid along the X, Y, and Z axes in the local coordinate system.", + "items": { + "type": "number", + "minimum": 0 + }, + "minItems": 3, + "maxItems": 3 + }, + "longitude": { + "type": "array", + "description": "The range along the longitude of the ellipsoid that the grid occupies. The elements represent the minimum and maximum values (west and east) respectively.", + "items": { + "type": "number", + "minimum": -180.0, + "maximum": 180.0 + }, + "minItems": 2, + "maxItems": 2 + }, + "latitude": { + "type": "array", + "description": "The range along the latitude of the ellipsoid that the grid occupies. The elements represent the minimum and maximum values (south and north) respectively.", + "items": { + "type": "number", + "minimum": -90.0, + "maximum": 90.0 + }, + "minItems": 2, + "maxItems": 2 + }, + "ratio": { + "type": "array", + "description": "The ratio along the radii of the ellipsoid that the grid occupies. The elements represent the minimum and maximum values respectively.", + "items": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "minItems": 2, + "maxItems": 2 + }, + "height": { + "type": "array", + "description": "The range of height above or below the ellipsoid that the grid occupies. Negative values are inside the ellipsoid, while positive values are outside. The elements represent the minimum and maximum values respectively.", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2 + } + }, + "required": [ + "radii" + ], + "oneOf": [ + "ratio", + "height" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json index 080052b2ed..812281bda2 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json @@ -20,15 +20,25 @@ "minItems": 3, "maxItems": 3 }, - "bounds": { - "$ref": "bounds.schema.json" + "box": { + "$ref": "box.schema.json" + }, + "cylinder": { + "$ref": "cylinder.schema.json" + }, + "ellipsoid": { + "$ref": "ellipsoid.schema.json" }, "padding": { "$ref": "padding.schema.json" } }, "required": [ - "dimension", - "bounds" + "dimensions" + ], + "oneOf": [ + { "required": [ "box" ] }, + { "required": [ "cylinder" ] }, + { "required": [ "ellipsoid" ] } ] } \ No newline at end of file From dc1029af855784eb59e9f25c9f4762f1b5fa21ba Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 4 Jun 2024 10:26:27 -0400 Subject: [PATCH 06/17] Add EXT_implicit_geometry --- .../Vendor/EXT_implicit_geometry/README.md | 193 ++++++++++++++++++ .../figures/non-uniform-box.png | Bin 0 -> 38752 bytes .../schema/box.schema.json | 30 +++ .../schema/cylinder.bounds.schema.json | 56 +++++ .../schema/cylinder.schema.json | 32 +++ .../schema/ellipsoid.bounds.schema.json | 52 +++++ .../schema/ellipsoid.schema.json | 31 +++ ...rimitive.EXT_implicit_geometry.schema.json | 46 +++++ .../schema/padding.schema.json | 36 ++++ .../schema/region.bounds.schema.json | 52 +++++ .../schema/region.schema.json | 37 ++++ .../schema/sphere.bounds.schema.json | 52 +++++ .../schema/sphere.schema.json | 26 +++ .../schema/box.schema.json | 22 +- ...primitive.EXT_primitive_voxels.schema.json | 16 +- 15 files changed, 655 insertions(+), 26 deletions(-) create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/README.md create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/non-uniform-box.png create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.bounds.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.bounds.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.bounds.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md new file mode 100644 index 0000000000..d634338346 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md @@ -0,0 +1,193 @@ +# EXT_implicit_geometry + +## Contributors +- Sean Lilley, Cesium +- Janine Liu, Cesium + +## Status +Draft + +## Dependencies +Written against the glTF 2.0 specification. + +## Overview + +This extension allows mesh primitives to represent renderable implicit surfaces. Typically, a glTF mesh primitive requires `attributes` that supply mesh data, and uses `mode` to indicate the mesh topology. With `EXT_implicit_geometry`, the primitive may omit these properties and instead use the extension to infer the implicit 3D volume. + +The following example illustrates how a primitive with this extension may represent an implicit box. + +``` +{ + "primitives": [ + { + "extensions": { + "EXT_implicit_geometry": { + "box": { + "size": [2, 2, 2] + } + } + } + } + ] +} +``` + +Primitives with this extension may still be affected by node transforms to position, orient, and scale the shape as needed. + +## Supported Geometry + +Currently, this extension supports the following implicit geometries: +- [`box`](#box) +- [`cylinder`](#cylinder) +- [`sphere`](#sphere) +- [`ellipsoid`](#ellipsoid) +- [`region`](#region) + +Only **one** shape may be defined at a time. + +By default, the implicit 3D volume is assumed to fill the entire shape specified in the extension. However, each shape allows an optional `slice` property to define the subsection of the shape in which the 3D volume is actually rendered. For instance, while the extension may define an implicit sphere, its `slice` can limit the volume to be only half of the full sphere. + +### Box + +The `box` property represents an axis-aligned box that is centered at the origin. The `size` property indicates its size in meters along the `x`, `y`, and `z` axes. + + + + + + + + + + +
+ Example + + Visual +
+    "primitives": [
+      {
+        "extensions": {
+          "EXT_implicit_geometry": {
+            "box": {
+              "size": [1, 0.5, 2],
+            }
+          }
+        }
+      }
+    ]
+    
+ +
+ +### Cylinder + +The `cylinder` property represents a cylinder that is aligned with the `y`-axis and centered at the origin. The `radius` and `height` properties indicate the dimensions of the cylinder in meters. + + + + + + + + + + +
+ Example + + Visual +
+    "primitives": [
+      {
+        "extensions": {
+          "EXT_implicit_geometry": {
+            "cylinder": {
+              "radius": 2,
+              "height": 3
+            }
+          }
+        }
+      }
+    ]
+    
+ **TODO** visual example +
+ +### Sphere + +The `sphere` property represents a sphere that is centered at the origin. The `radius` of the sphere is specified in meters. + + + + + + + + + + +
+ Example + + Visual +
+    "primitives": [
+      {
+        "extensions": {
+          "EXT_implicit_geometry": {
+            "sphere": {
+              "radius": 2,
+            }
+          }
+        }
+      }
+    ]
+    
+ **TODO** visual example +
+ +### Ellipsoid + +The `ellipsoid` property represents an ellipsoid that is centered at the origin. The `radii` property indicates the radii of the ellipsoid in meters along the `x`, `y`, and `z` axes. + +**TODO** visual example + + + + + + + + + + +
+ Example + + Visual +
+      "primitives": [
+        {
+          "extensions": {
+            "EXT_implicit_geometry": {
+              "ellpisoid": {
+                "radii": [2, 3, 4]
+              }
+            }
+          }
+        }
+      ]
+    
+ **TODO** visual example +
+``` + +### Region + +The `region` property represents a region above the surface of an ellipsoid. Though the ellipsoid itself is centered at the origin, the region may be distant from the origin due to its properties. + +The `semiMajorAxis` property indicates the radii of the ellipsoid in meters along the `x`, `y`, and `z` axes. + +## Optional vs. Required +This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/non-uniform-box.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/non-uniform-box.png new file mode 100644 index 0000000000000000000000000000000000000000..065b7d8118a8492694b8a10bb4fa9e61ba769af5 GIT binary patch literal 38752 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

||2Tn$Ib(w;xRum7pW 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 OiIf!7<@3*&`u~3#YY9;R literal 0 HcmV?d00001 diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json new file mode 100644 index 0000000000..67c9d9600f --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "box.schema.json", + "title": "Box", + "type": "object", + "description": "An implicit box centered at the local space origin.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "size": { + "type": "array", + "description": "The size of the box in three dimensions.", + "items": { + "type": "number" + }, + "minItems": 3, + "maxItems": 3 + }, + "bounds": { + "$ref": "box.bounds.schema.json", + "description": "The optional bounds of the box." + } + }, + "required": [ + "size" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.bounds.schema.json new file mode 100644 index 0000000000..296769a827 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.bounds.schema.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "cylinder.bounds.schema.json", + "title": "Cylinder Bounds", + "type": "object", + "description": "A set of bounds for an implicit cylinder surface. Defines the subsection of the cylinder that the implicit volume actually occupies.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "minRadius": { + "type": "number", + "description": "The minimum radial bound of the cylinder.", + "minimum": 0, + "maximum": 1, + "default": 0 + }, + "maxRadius": { + "type": "number", + "description": "The maximum radial bound of the cylinder.", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "minHeight": { + "type": "number", + "description": "The minimum height bound of the cylinder.", + "minimum": 0, + "maximum": 1, + "default": 0 + }, + "maxHeight": { + "type": "number", + "description": "The maximum height bound of the cylinder.", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "minAngle": { + "type": "number", + "description": "The maximum angular bound of the cylinder in radians. Values must be in the range [-pi, pi].", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + "default": -3.14159265359 + }, + "maxAngle": { + "type": "number", + "description": "The maximum angular bound of the cylinder in radians. Values must be in the range [-pi, pi].", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + "default": 3.14159265359 + } + } +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json new file mode 100644 index 0000000000..7d6c7759d2 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json @@ -0,0 +1,32 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "cylinder.schema.json", + "title": "Cylinder", + "type": "object", + "description": "An implicit cylinder centered at the local space origin.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "radius": { + "type": "number", + "description": "The radius of the cylinder in local space.", + "minimum": 0 + }, + "height": { + "type": "number", + "description": "The height of the cylinder in local space.", + "minimum": 0 + }, + "bounds": { + "$ref": "cylinder.bounds.schema.json", + "description": "The optional bounds of the cylinder." + } + }, + "required": [ + "radius", + "height" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.bounds.schema.json new file mode 100644 index 0000000000..39ca274197 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.bounds.schema.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "ellipsoid.bounds.schema.json", + "title": "Ellipsoid Bounds", + "type": "object", + "description": "A set of bounds for an implicit ellipsoid surface. Defines the subsection of the ellipsoid that the implicit volume actually occupies.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "minRadius": { + "type": "number", + "description": "The minimum radial bound of the ellipsoid.", + "minimum": 0, + "maximum": 1, + "default": 0 + }, + "maxRadius": { + "type": "number", + "description": "The maximum radial bound of the ellipsoid.", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "minAngle": { + "type": "array", + "description": "The minimum angular bounds of the ellipsoid in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [-3.14159265359, -1.57079632679] + }, + "minAngle": { + "type": "array", + "description": "The maximum angular bounds of the ellipsoid in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [3.14159265359, 1.57079632679] + }, + } +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json new file mode 100644 index 0000000000..6fa161c444 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "ellipsoid.schema.json", + "title": "Ellipsoid", + "type": "object", + "description": "An implicit ellipsoid centered at the local space origin.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "radii": { + "type": "array", + "description": "The radii of the ellipsoid in meters along the X, Y, and Z axes in local space.", + "items": { + "type": "number", + "minimum": 0 + }, + "minItems": 3, + "maxItems": 3 + }, + "bounds": { + "$ref": "ellipsoid.bounds.schema.json", + "description": "The optional bounds of the ellipsoid." + } + }, + "required": [ + "radii" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json new file mode 100644 index 0000000000..7e68436f6a --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "mesh.primitive.EXT_implicit_geometry.schema.json", + "title": "EXT_primitive_voxels glTF Mesh Primitive extension", + "type": "object", + "description": "`EXT_implicit_geometry` extension for a primitive in a glTF model, to define implicit 3D geometry", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "box": { + "$ref": "box.schema.json" + }, + "cylinder": { + "$ref": "cylinder.schema.json" + }, + "sphere": { + "$ref": "sphere.schema.json" + }, + "ellipsoid": { + "$ref": "ellipsoid.schema.json" + }, + "region": { + "$ref": "region.schema.json" + }, + }, + "oneOf": [ + { + "required": "box" + }, + { + "required": "cylinder" + }, + { + "required": "sphere" + }, + { + "required": "ellipsoid" + }, + { + "required": "region" + } + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json new file mode 100644 index 0000000000..ad94b3ed0c --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "padding.schema.json", + "title": "Padding", + "type": "object", + "description": "The padding property specifies how many rows of attribute data in each dimension come from neighboring grids.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "before": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + }, + "minItems": 3, + "maxItems": 3 + }, + "after": { + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + }, + "minItems": 3, + "maxItems": 3 + } + }, + "required": [ + "before", + "after" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json new file mode 100644 index 0000000000..911d3a54b3 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "region.bounds.schema.json", + "title": "Region Bounds", + "type": "object", + "description": "A set of bounds for an implicit region relative to an ellipsoid. Defines the subsection of the region that the implicit volume actually occupies.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "minHeight": { + "type": "number", + "description": "The minimum height bound of the region.", + "minimum": 0, + "maximum": 1, + "default": 0 + }, + "maxHeight": { + "type": "number", + "description": "The maximum height bound of the region.", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "minAngle": { + "type": "array", + "description": "The minimum angular bounds of the region in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [-3.14159265359, -1.57079632679] + }, + "minAngle": { + "type": "array", + "description": "The maximum angular bounds of the region in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [3.14159265359, 1.57079632679] + }, + } +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json new file mode 100644 index 0000000000..70b2b729eb --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "region.schema.json", + "title": "Region", + "type": "object", + "description": "An implicit region defined relative to an ellipsoid that is centered at the local space origin.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "semiMajorAxisRadius": { + "type": "number", + "description": "The radius of the reference ellipsoid along its semi-major axis in meters.", + "minimum": 0 + }, + "semiMinorAxisRadius": { + "type": "number", + "description": "The radius of the reference ellipsoid along its semi-minor axis in meters.", + "minimum": 0 + }, + "heightFromSurface": { + "type": "number", + "description": "The height of this region from the surface of the reference ellipsoid in meters.", + }, + "bounds": { + "$ref": "region.bounds.schema.json", + "description": "The optional bounds of the region." + } + }, + "required": [ + "semiMajorAxisRadius", + "semiMinorAxisRadius", + "heightFromSurface" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.bounds.schema.json new file mode 100644 index 0000000000..32aa0deda3 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.bounds.schema.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "sphere.bounds.schema.json", + "title": "Sphere Bounds", + "type": "object", + "description": "A set of bounds for an implicit sphere surface. Defines the subsection of the sphere that the implicit volume actually occupies.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "minRadius": { + "type": "number", + "description": "The minimum radial bound of the sphere.", + "minimum": 0, + "maximum": 1, + "default": 0 + }, + "maxRadius": { + "type": "number", + "description": "The maximum radial bound of the sphere.", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "minAngle": { + "type": "array", + "description": "The minimum angular bounds of the sphere in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [-3.14159265359, -1.57079632679] + }, + "minAngle": { + "type": "array", + "description": "The maximum angular bounds of the sphere in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [3.14159265359, 1.57079632679] + }, + } +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json new file mode 100644 index 0000000000..ff3184c476 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "sphere.schema.json", + "title": "Sphere", + "type": "object", + "description": "An implicit sphere centered at the local space origin.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "radius": { + "type": "number", + "description": "The radius of the sphere in local space.", + "minimum": 0 + }, + "bounds": { + "$ref": "sphere.bounds.schema.json", + "description": "The optional bounds of the sphere." + } + }, + "required": [ + "radius" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json index d77223606a..a348b0f690 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json @@ -3,32 +3,32 @@ "$id": "box.schema.json", "title": "Box", "type": "object", - "description": "The box property indicates that the voxels conform to a box-based grid. box.min and box.max represent the corners of the box grid in local coordinates.", + "description": "An implicit box surface centered at the local space origin.", "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { - "min": { + "size": { "type": "array", + "description": "The size of the box in three dimensions.", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 }, - "max": { - "type": "array", - "items": { - "type": "number" - }, - "minItems": 3, - "maxItems": 3 + "bounds": { + "allOf": [ + { + "$ref": "box.bounds.schema.json", + "description": "The optional bounds of the box." + } + ], } }, "required": [ - "min", - "max" + "size" ] } \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json index 812281bda2..61636d8a67 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json @@ -3,7 +3,7 @@ "$id": "mesh.primitive.EXT_primitive_voxels.schema.json", "title": "EXT_primitive_voxels glTF Mesh Primitive extension", "type": "object", - "description": "`EXT_primitive_voxels` extension for a primitive in a glTF model, to specify voxel grid geomtetry for volumetric data", + "description": "`EXT_primitive_voxels` extension for a primitive in a glTF model, to specify voxel grid geometry for volumetric data", "allOf": [ { "$ref": "glTFProperty.schema.json" @@ -20,25 +20,11 @@ "minItems": 3, "maxItems": 3 }, - "box": { - "$ref": "box.schema.json" - }, - "cylinder": { - "$ref": "cylinder.schema.json" - }, - "ellipsoid": { - "$ref": "ellipsoid.schema.json" - }, "padding": { "$ref": "padding.schema.json" } }, "required": [ "dimensions" - ], - "oneOf": [ - { "required": [ "box" ] }, - { "required": [ "cylinder" ] }, - { "required": [ "ellipsoid" ] } ] } \ No newline at end of file From 22e2c7132dffa87271a9f7c71b41a66165096d37 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 4 Jun 2024 11:10:33 -0400 Subject: [PATCH 07/17] Bounds -> Slice --- .../Vendor/EXT_implicit_geometry/README.md | 63 ++++++++++++------ .../EXT_implicit_geometry/figures/box.png | Bin 0 -> 22453 bytes .../figures/cylinder.png | Bin 0 -> 22808 bytes .../figures/non-uniform-box.png | Bin 38752 -> 0 bytes .../EXT_implicit_geometry/figures/sphere.png | Bin 0 -> 26088 bytes .../schema/box.schema.json | 6 +- .../schema/cylinder.schema.json | 10 +-- ...schema.json => cylinder.slice.schema.json} | 18 ++--- .../schema/ellipsoid.schema.json | 8 +-- ...chema.json => ellipsoid.slice.schema.json} | 0 ...rimitive.EXT_implicit_geometry.schema.json | 2 +- .../schema/padding.schema.json | 36 ---------- .../schema/region.bounds.schema.json | 52 --------------- .../schema/region.schema.json | 10 +-- .../schema/region.slice.schema.json | 58 ++++++++++++++++ .../schema/sphere.schema.json | 6 +- ...s.schema.json => sphere.slice.schema.json} | 14 ++-- 17 files changed, 134 insertions(+), 149 deletions(-) create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/box.png create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/cylinder.png delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/non-uniform-box.png create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/sphere.png rename extensions/2.0/Vendor/EXT_implicit_geometry/schema/{cylinder.bounds.schema.json => cylinder.slice.schema.json} (58%) rename extensions/2.0/Vendor/EXT_implicit_geometry/schema/{ellipsoid.bounds.schema.json => ellipsoid.slice.schema.json} (100%) delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json rename extensions/2.0/Vendor/EXT_implicit_geometry/schema/{sphere.bounds.schema.json => sphere.slice.schema.json} (53%) diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md index d634338346..0669848b59 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md @@ -54,10 +54,7 @@ The `box` property represents an axis-aligned box that is centered at the origin - @@ -75,7 +72,7 @@ The `box` property represents an axis-aligned box that is centered at the origin ]
- Example - - Visual + Example
- +
@@ -87,10 +84,7 @@ The `cylinder` property represents a cylinder that is aligned with the `y`-axis - @@ -109,7 +103,7 @@ The `cylinder` property represents a cylinder that is aligned with the `y`-axis ]
- Example - - Visual + Example
- **TODO** visual example +
@@ -121,10 +115,7 @@ The `sphere` property represents a sphere that is centered at the origin. The `r - @@ -142,7 +133,7 @@ The `sphere` property represents a sphere that is centered at the origin. The `r ]
- Example - - Visual + Example
- **TODO** visual example +
@@ -156,10 +147,7 @@ The `ellipsoid` property represents an ellipsoid that is centered at the origin. - @@ -168,7 +156,7 @@ The `ellipsoid` property represents an ellipsoid that is centered at the origin. { "extensions": { "EXT_implicit_geometry": { - "ellpisoid": { + "ellipsoid": { "radii": [2, 3, 4] } } @@ -185,9 +173,40 @@ The `ellipsoid` property represents an ellipsoid that is centered at the origin. ### Region -The `region` property represents a region above the surface of an ellipsoid. Though the ellipsoid itself is centered at the origin, the region may be distant from the origin due to its properties. +The `region` property represents a region extruded from the surface of a ellipsoid. The ellipsoid itself is not part of the geometry; it is merely used as reference from which the actual region is defined. + +The reference ellipsoid is centered at the origin. The `semiMajorAxisRadius` indicates the radii of the ellipsoid in meters along the `x` and `z` axes. The `semiMinorAxisRadius` indicates the radius of the ellipsoid in meters along the `y` axis. + +The `heightFromSurface` property indicates the height of the region from the ellipsoid's surface, in meters. In other words, the region begins atop ellipsoid's surface, and is then extruded outwards to the specified height. -The `semiMajorAxis` property indicates the radii of the ellipsoid in meters along the `x`, `y`, and `z` axes. +
- Example - - Visual + Example
+ + + + + + + +
+ Example +
+      "primitives": [
+        {
+          "extensions": {
+            "EXT_implicit_geometry": {
+              "region": {
+                "semiMajorAxisRadius": 4,
+                "semiMinorAxisRadius": 2,
+                "heightFromSurface": 0.5 
+              }
+            }
+          }
+        }
+      ]
+    
+ **TODO** visual example +
+``` ## Optional vs. Required This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/box.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/box.png new file mode 100644 index 0000000000000000000000000000000000000000..ace531d896b60a47102a32269a888d03f248052a GIT binary patch literal 22453 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 bh!UhzHg5k7ZyN`rNeKr#XWLR6-@AVSda|9v literal 0 HcmV?d00001 diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/cylinder.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/cylinder.png new file mode 100644 index 0000000000000000000000000000000000000000..2511611a7860843bcaeee157bb31d4e727deb0ee GIT binary patch literal 22808 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%0Dp771qc%2ve=zc}*jiG5gmbSgBA~`un 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 Z&b;t+NNS?Az%FcYgc*GJpZ+KR{2#H}BX9r! literal 0 HcmV?d00001 diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/non-uniform-box.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/non-uniform-box.png deleted file mode 100644 index 065b7d8118a8492694b8a10bb4fa9e61ba769af5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38752 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

||2Tn$Ib(w;xRum7pW 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 OiIf!7<@3*&`u~3#YY9;R diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/sphere.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/sphere.png new file mode 100644 index 0000000000000000000000000000000000000000..4b514fd87cf096322e9a65aed92b4c920e421bdd GIT binary patch literal 26088 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 literal 0 HcmV?d00001 diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json index 67c9d9600f..aee411a61d 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json @@ -12,16 +12,12 @@ "properties": { "size": { "type": "array", - "description": "The size of the box in three dimensions.", + "description": "The size of the box in meters.", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 - }, - "bounds": { - "$ref": "box.bounds.schema.json", - "description": "The optional bounds of the box." } }, "required": [ diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json index 7d6c7759d2..0d7b089e34 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json @@ -12,17 +12,17 @@ "properties": { "radius": { "type": "number", - "description": "The radius of the cylinder in local space.", + "description": "The radius of the cylinder in meters.", "minimum": 0 }, "height": { "type": "number", - "description": "The height of the cylinder in local space.", + "description": "The height of the cylinder in meters.", "minimum": 0 }, - "bounds": { - "$ref": "cylinder.bounds.schema.json", - "description": "The optional bounds of the cylinder." + "slice": { + "$ref": "cylinder.slice.schema.json", + "description": "The optionally-defined slice of the cylinder." } }, "required": [ diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.slice.schema.json similarity index 58% rename from extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.bounds.schema.json rename to extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.slice.schema.json index 296769a827..9b6b74a099 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.bounds.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.slice.schema.json @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cylinder.bounds.schema.json", - "title": "Cylinder Bounds", + "$id": "cylinder.slice.schema.json", + "title": "Cylinder Slice", "type": "object", - "description": "A set of bounds for an implicit cylinder surface. Defines the subsection of the cylinder that the implicit volume actually occupies.", + "description": "A slice of an implicit cylinder. Defines the subsection of the cylinder that the implicit volume actually occupies.", "allOf": [ { "$ref": "glTFProperty.schema.json" @@ -12,42 +12,42 @@ "properties": { "minRadius": { "type": "number", - "description": "The minimum radial bound of the cylinder.", + "description": "The start of the slice along the radius of the cylinder.", "minimum": 0, "maximum": 1, "default": 0 }, "maxRadius": { "type": "number", - "description": "The maximum radial bound of the cylinder.", + "description": "The end of the slice along the radius of the cylinder.", "minimum": 0, "maximum": 1, "default": 1 }, "minHeight": { "type": "number", - "description": "The minimum height bound of the cylinder.", + "description": "The start of the slice along the height of the cylinder.", "minimum": 0, "maximum": 1, "default": 0 }, "maxHeight": { "type": "number", - "description": "The maximum height bound of the cylinder.", + "description": "The end of the slice along the height of the cylinder.", "minimum": 0, "maximum": 1, "default": 1 }, "minAngle": { "type": "number", - "description": "The maximum angular bound of the cylinder in radians. Values must be in the range [-pi, pi].", + "description": "The start of the slice along the angle of the cylinder. Values must be in the range [-pi, pi].", "minimum": -3.14159265359, "maximum": 3.14159265359, "default": -3.14159265359 }, "maxAngle": { "type": "number", - "description": "The maximum angular bound of the cylinder in radians. Values must be in the range [-pi, pi].", + "description": "The end of the slice along the angle of the cylinder. Values must be in the range [-pi, pi].", "minimum": -3.14159265359, "maximum": 3.14159265359, "default": 3.14159265359 diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json index 6fa161c444..c88a72137d 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json @@ -12,7 +12,7 @@ "properties": { "radii": { "type": "array", - "description": "The radii of the ellipsoid in meters along the X, Y, and Z axes in local space.", + "description": "The radii of the ellipsoid along the X, Y, and Z axes in meters.", "items": { "type": "number", "minimum": 0 @@ -20,9 +20,9 @@ "minItems": 3, "maxItems": 3 }, - "bounds": { - "$ref": "ellipsoid.bounds.schema.json", - "description": "The optional bounds of the ellipsoid." + "slice": { + "$ref": "ellipsoid.slice.schema.json", + "description": "The optionally-defined slice of the ellipsoid." } }, "required": [ diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json similarity index 100% rename from extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.bounds.schema.json rename to extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json index 7e68436f6a..ffbd656bfe 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json @@ -3,7 +3,7 @@ "$id": "mesh.primitive.EXT_implicit_geometry.schema.json", "title": "EXT_primitive_voxels glTF Mesh Primitive extension", "type": "object", - "description": "`EXT_implicit_geometry` extension for a primitive in a glTF model, to define implicit 3D geometry", + "description": "`EXT_implicit_geometry` extension for a primitive in a glTF model to represent implicit 3D geometry", "allOf": [ { "$ref": "glTFProperty.schema.json" diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json deleted file mode 100644 index ad94b3ed0c..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/padding.schema.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "padding.schema.json", - "title": "Padding", - "type": "object", - "description": "The padding property specifies how many rows of attribute data in each dimension come from neighboring grids.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "before": { - "type": "array", - "items": { - "type": "integer", - "minimum": 0 - }, - "minItems": 3, - "maxItems": 3 - }, - "after": { - "type": "array", - "items": { - "type": "integer", - "minimum": 0 - }, - "minItems": 3, - "maxItems": 3 - } - }, - "required": [ - "before", - "after" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json deleted file mode 100644 index 911d3a54b3..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.bounds.schema.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "region.bounds.schema.json", - "title": "Region Bounds", - "type": "object", - "description": "A set of bounds for an implicit region relative to an ellipsoid. Defines the subsection of the region that the implicit volume actually occupies.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "minHeight": { - "type": "number", - "description": "The minimum height bound of the region.", - "minimum": 0, - "maximum": 1, - "default": 0 - }, - "maxHeight": { - "type": "number", - "description": "The maximum height bound of the region.", - "minimum": 0, - "maximum": 1, - "default": 1 - }, - "minAngle": { - "type": "array", - "description": "The minimum angular bounds of the region in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359, - }, - "minItems": 2, - "maxItems": 2, - "default": [-3.14159265359, -1.57079632679] - }, - "minAngle": { - "type": "array", - "description": "The maximum angular bounds of the region in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359, - }, - "minItems": 2, - "maxItems": 2, - "default": [3.14159265359, 1.57079632679] - }, - } -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json index 70b2b729eb..539c1bbd0f 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json @@ -12,21 +12,21 @@ "properties": { "semiMajorAxisRadius": { "type": "number", - "description": "The radius of the reference ellipsoid along its semi-major axis in meters.", + "description": "The radius along the semi-major axis of the reference ellipsoid in meters.", "minimum": 0 }, "semiMinorAxisRadius": { "type": "number", - "description": "The radius of the reference ellipsoid along its semi-minor axis in meters.", + "description": "The radius along the semi-minor axis of the reference ellipsoid in meters.", "minimum": 0 }, "heightFromSurface": { "type": "number", "description": "The height of this region from the surface of the reference ellipsoid in meters.", }, - "bounds": { - "$ref": "region.bounds.schema.json", - "description": "The optional bounds of the region." + "slice": { + "$ref": "region.slice.schema.json", + "description": "The optionally-defined slice of the region." } }, "required": [ diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json new file mode 100644 index 0000000000..ae5ac69349 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "region.bounds.schema.json", + "title": "Region Bounds", + "type": "object", + "description": "A slice of an implicit region relative to an ellipsoid. Defines the subsection of the region that the implicit volume actually occupies.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "minHeight": { + "type": "number", + "description": "The start of the slice along the region's height.", + "minimum": 0, + "maximum": 1, + "default": 0 + }, + "maxHeight": { + "type": "number", + "description": "The end of the slice along the region's height.", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "minAngle": { + "type": "array", + "description": "The start of the slice along the angles of the reference ellipsoid, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [ + -3.14159265359, + -1.57079632679 + ] + }, + "minAngle": { + "type": "array", + "description": "The end of the slice along the angles of the reference ellipsoid, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "items": { + "type": "number", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + }, + "minItems": 2, + "maxItems": 2, + "default": [ + 3.14159265359, + 1.57079632679 + ] + }, + } +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json index ff3184c476..23bea914c8 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json @@ -15,9 +15,9 @@ "description": "The radius of the sphere in local space.", "minimum": 0 }, - "bounds": { - "$ref": "sphere.bounds.schema.json", - "description": "The optional bounds of the sphere." + "slice": { + "$ref": "sphere.slice.schema.json", + "description": "The optionally-defined slice of the sphere." } }, "required": [ diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.bounds.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json similarity index 53% rename from extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.bounds.schema.json rename to extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json index 32aa0deda3..2e3c333a6c 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.bounds.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "sphere.bounds.schema.json", - "title": "Sphere Bounds", + "$id": "sphere.slice.schema.json", + "title": "Sphere Slice", "type": "object", - "description": "A set of bounds for an implicit sphere surface. Defines the subsection of the sphere that the implicit volume actually occupies.", + "description": "A slice of an implicit sphere. Defines the subsection of the sphere that the implicit volume actually occupies.", "allOf": [ { "$ref": "glTFProperty.schema.json" @@ -12,21 +12,21 @@ "properties": { "minRadius": { "type": "number", - "description": "The minimum radial bound of the sphere.", + "description": "The start of the slice along the radius of the sphere.", "minimum": 0, "maximum": 1, "default": 0 }, "maxRadius": { "type": "number", - "description": "The maximum radial bound of the sphere.", + "description": "The end of the slice along the radius of the sphere.", "minimum": 0, "maximum": 1, "default": 1 }, "minAngle": { "type": "array", - "description": "The minimum angular bounds of the sphere in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "description": "The start of the slice across the angles of the sphere, given in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", "items": { "type": "number", "minimum": -3.14159265359, @@ -38,7 +38,7 @@ }, "minAngle": { "type": "array", - "description": "The maximum angular bounds of the sphere in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "description": "The end of the slice across the angles of the sphere, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", "items": { "type": "number", "minimum": -3.14159265359, From 98f2868618c20e5679fe801a90275b5e1681e55d Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Tue, 4 Jun 2024 11:28:19 -0400 Subject: [PATCH 08/17] Begin to tie EXT_implicit_geometry into EXT_primitive_voxels --- .../Vendor/EXT_implicit_geometry/README.md | 18 ---- .../2.0/Vendor/EXT_primitive_voxels/README.md | 86 +++++++++++-------- .../schema/box.schema.json | 34 -------- .../schema/cylinder.schema.json | 46 ---------- .../schema/ellipsoid.schema.json | 73 ---------------- 5 files changed, 48 insertions(+), 209 deletions(-) delete mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md index 0669848b59..7fad6f524c 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md @@ -14,24 +14,6 @@ Written against the glTF 2.0 specification. This extension allows mesh primitives to represent renderable implicit surfaces. Typically, a glTF mesh primitive requires `attributes` that supply mesh data, and uses `mode` to indicate the mesh topology. With `EXT_implicit_geometry`, the primitive may omit these properties and instead use the extension to infer the implicit 3D volume. -The following example illustrates how a primitive with this extension may represent an implicit box. - -``` -{ - "primitives": [ - { - "extensions": { - "EXT_implicit_geometry": { - "box": { - "size": [2, 2, 2] - } - } - } - } - ] -} -``` - Primitives with this extension may still be affected by node transforms to position, orient, and scale the shape as needed. ## Supported Geometry diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md index 9fd78e8c92..2175ffa563 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md @@ -21,56 +21,66 @@ Written against the glTF 2.0 specification. This extension allows mesh primitives to represent volumetric (voxel) data via custom attributes. Primitives that use this extension must set their `mode` to the constant `0x80000000` (`2147483648`), which is used to indicate voxels. -Typically, glTF mesh primitives use the `POSITION` attribute to store positional mesh data. However, `POSITION` is neither required nor used by this extension. Instead, `EXT_primitive_voxels` describe the positions and geometry of voxels using its own properties, and the attributes refer to what kind of data they represent. Primitives with this extension can still be affected by node transforms to position, orient, and scale the voxel grid as needed. +Typically, glTF mesh primitives use the `POSITION` attribute to store positional mesh data. However, `POSITION` is neither required nor used by this extension. Instead, `EXT_primitive_voxels` relies on the [`EXT_implicit_geometry` extension](../EXT_implicit_geometry/) to describe the shape of the voxel grid. ``` "primitives": [ { - "attributes": { - "_TEMPERATURE": 0 - }, "mode": 2147483648, "extensions": { + "EXT_implicit_geometry": { + "box": { + "size": [2, 2, 2] + } + }, "EXT_primitive_voxels": { - // geometric properties here + "dimensions": [8, 8, 8], + "padding": { + "before": [1, 1, 1], + "after": [1, 1, 1] + }, + "attributes": { + "_TEMPERATURE": 0 + }, } } } ] ``` -Although voxels are commonly associated with cubic geometry on a box-based grid, this extension allows voxels to be based on other types of grid geometry, including cylinders and ellipsoids, visualized below. +Although voxels are commonly associated with cubic geometry on a box-based grid, this extension allows voxels to be based on other types of grid geometry from `EXT_implicit_geometry`. This includes cylinders and regions, visualized below. -|Box|Cylinder|Ellipsoid| +|Box|Cylinder|Region| | ------------- | ------------- | ------------- | |![Box Voxel Grid](figures/box.png)|![Cylindrical Voxel Grid](figures/cylinder.png)|![Ellipsoid Voxel Grid](figures/sphere.png)| -Each of these grids is defined by the respectively named properties within the extension: -- [`box`](#box-grid) -- [`cylinder`](#cylindrical-grid) -- [`ellipsoid`](#ellipsoidal-grid) - -Only **one** of these may be defined at a time. Within this geometry, voxels exist inside a bounding volume that conforms to the geometry of the grid, as described by the relevant property. +Within this geometry, voxels exist inside a bounding volume that conforms to the geometry of the grid. The `dimensions` property refers to the number of subdivisions _within_ this bounding volume. Each value of `dimensions` must be a positive integer. -The `dimensions` property refers to the number of subdivisions _within_ this bounding volume. Each value of `dimensions` must be a positive integer. - -The relationship between `dimensions` and the other aforementioned properties is explained in detail below. +The relationship between `dimensions` and the grid geometry is explained in detail below. ### Box Grid -A **box** grid is a Cartesian grid defined by `x`, `y`, and `z` axes with equally-sized boxes. A voxel primitive that is based on a box grid may define the `box` property like so: +A **box** grid is a Cartesian grid defined by `x`, `y`, and `z` axes with equally-sized boxes. A voxel primitive that is based on a box grid may be defined like so: ``` -"EXT_primitive_voxels": { - "dimensions": [8, 8, 8], - "box": { - "min": [0.25, 0.5, 0.5], - "max": [0.375, 0.625, 0.625] +{ +"extensions": { + "EXT_implicit_geometry": { + "box": { + "size": [2, 2, 2] + } + }, + "EXT_primitive_voxels": { + "dimensions": [8, 8, 8], + "attributes": { + "_TEMPERATURE": 0 + }, + } } } ``` -The `min` and `max` properties refer to the minimum and maximum positions that form the corners of the grid. These positions are given in the primitive's local space. The `dimensions` correspond to the subdivisions of the box along the `x`, `y`, and `z` axes respectively. +The `dimensions` correspond to the subdivisions of the box along the `x`, `y`, and `z` axes respectively. ![Uniform box grid](figures/uniform-box.png)

A box grid spanning from -1 to 1 in all three axes, subdivided into two cells along each axis. The origin is in the center of the box.

@@ -86,29 +96,29 @@ A **cylinder** grid is subdivided along the radius, height, and angle ranges of ![Cylinder subdivisions](figures/cylinder-subdivisions.png) -The cylinder is aligned with the `y`-axis in the primitive's local space. As such, the `height` range of the cylinder is specified in values along that local `y`-axis. Subdivisions along the `radius` are concentric, centered around the `y`-axis and extending outwards. The `angle` is defined in `pi` +The cylinder is aligned with the `y`-axis in the primitive's local space. As such, the `height` is subdivided along that local `y`-axis. Subdivisions along the `radius` are concentric, centered around the `y`-axis and extending outwards. The `angle` is subdivided around the circumference of the cylinder. A voxel primitive that is based on a cylinder grid may define the `cylinder` property like so: ``` -"EXT_primitive_voxels": { - "dimensions": [4, 4, 4], - "cylinder": { - "radius": [0.5, 1.25], - "height": [-1.0, 1.0], - "angle": [-1.57079632679, 1.57079632679] // [-pi/2, pi/2] +{ +"extensions": { + "EXT_implicit_geometry": { + "cylinder": { + "radius": 2, + "height": 3 + } + }, + "EXT_primitive_voxels": { + "dimensions": [8, 8, 8], + "attributes": { + "_TEMPERATURE": 0 + }, + } } } ``` -For instance, between `(0, -1, -pi)` and `(1, 1, pi)` - -| Axis | Coordinate | Positive Direction | -| ---- | ---------- | ------------------ | -| 0 | radius | From center (increasing radius) | -| 1 | height | From bottom to top (increasing height) | -| 2 | angle | From -pi to pi clockwise (see figure below) | - [TODO](image) ### Ellipsoidal Grid diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json deleted file mode 100644 index a348b0f690..0000000000 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/box.schema.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "box.schema.json", - "title": "Box", - "type": "object", - "description": "An implicit box surface centered at the local space origin.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "size": { - "type": "array", - "description": "The size of the box in three dimensions.", - "items": { - "type": "number" - }, - "minItems": 3, - "maxItems": 3 - }, - "bounds": { - "allOf": [ - { - "$ref": "box.bounds.schema.json", - "description": "The optional bounds of the box." - } - ], - } - }, - "required": [ - "size" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json deleted file mode 100644 index c44f8c8c0b..0000000000 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/cylinder.schema.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cylinder.schema.json", - "title": "Cylinder", - "type": "object", - "description": "The cylinder property indicates that the voxels conform to a cylindrical grid. Each sub-property defines the section of the cylinder that the grid actually occupies.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "radius": { - "type": "array", - "description": "The radial extents of the cylindrical grid in local space. The elements represent the minimum and maximum values respectively.", - "items": { - "type": "number", - "minimum": 0 - }, - "minItems": 2, - "maxItems": 2 - }, - "height": { - "type": "array", - "description": "The height extents of the cylindrical grid in local space. The elements represent the minimum and maximum values respectively.", - "items": { - "type": "number" - }, - "minItems": 2, - "maxItems": 2 - }, - "angle": { - "type": "array", - "description": "The angular extents of the cylindrical grid in local space. Values must be in the range [-pi, pi]. The elements represent the minimum and maximum values respectively.", - "items": { - "type": "number" - }, - "minItems": 2, - "maxItems": 2 - } - }, - "required": [ - "radius", - "height" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json deleted file mode 100644 index bae98f02e7..0000000000 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/ellipsoid.schema.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "ellipsoid.schema.json", - "title": "Ellipsoid", - "type": "object", - "description": "The ellipsoid property indicates that the voxels conform to an ellipsoidal grid. Each sub-property defines the section of the ellipsoid that the grid actually occupies.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "radii": { - "type": "array", - "description": "The radii of the ellipsoid along the X, Y, and Z axes in the local coordinate system.", - "items": { - "type": "number", - "minimum": 0 - }, - "minItems": 3, - "maxItems": 3 - }, - "longitude": { - "type": "array", - "description": "The range along the longitude of the ellipsoid that the grid occupies. The elements represent the minimum and maximum values (west and east) respectively.", - "items": { - "type": "number", - "minimum": -180.0, - "maximum": 180.0 - }, - "minItems": 2, - "maxItems": 2 - }, - "latitude": { - "type": "array", - "description": "The range along the latitude of the ellipsoid that the grid occupies. The elements represent the minimum and maximum values (south and north) respectively.", - "items": { - "type": "number", - "minimum": -90.0, - "maximum": 90.0 - }, - "minItems": 2, - "maxItems": 2 - }, - "ratio": { - "type": "array", - "description": "The ratio along the radii of the ellipsoid that the grid occupies. The elements represent the minimum and maximum values respectively.", - "items": { - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "minItems": 2, - "maxItems": 2 - }, - "height": { - "type": "array", - "description": "The range of height above or below the ellipsoid that the grid occupies. Negative values are inside the ellipsoid, while positive values are outside. The elements represent the minimum and maximum values respectively.", - "items": { - "type": "number" - }, - "minItems": 2, - "maxItems": 2 - } - }, - "required": [ - "radii" - ], - "oneOf": [ - "ratio", - "height" - ] -} \ No newline at end of file From be26d0f3772cf4f75b5e1fc596b156f180876bc1 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Wed, 12 Jun 2024 10:07:44 -0400 Subject: [PATCH 09/17] Move EXT_implicit_geometry to glTF root --- .../Vendor/EXT_implicit_geometry/README.md | 80 ++++++++------- .../schema/ellipsoid.slice.schema.json | 22 ++--- ...metry.schema.json => geometry.schema.json} | 18 ++-- .../glTF.EXT_implicit_geometry.schema.json | 22 +++++ .../schema/region.schema.json | 2 +- .../schema/region.slice.schema.json | 4 +- .../schema/sphere.slice.schema.json | 8 +- .../2.0/Vendor/EXT_primitive_voxels/README.md | 98 ++++++++----------- ...primitive.EXT_primitive_voxels.schema.json | 5 +- .../schema/padding.schema.json | 2 +- 10 files changed, 138 insertions(+), 123 deletions(-) rename extensions/2.0/Vendor/EXT_implicit_geometry/schema/{mesh.primitive.EXT_implicit_geometry.schema.json => geometry.schema.json} (57%) create mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md index 7fad6f524c..88c69e7432 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md @@ -12,9 +12,7 @@ Written against the glTF 2.0 specification. ## Overview -This extension allows mesh primitives to represent renderable implicit surfaces. Typically, a glTF mesh primitive requires `attributes` that supply mesh data, and uses `mode` to indicate the mesh topology. With `EXT_implicit_geometry`, the primitive may omit these properties and instead use the extension to infer the implicit 3D volume. - -Primitives with this extension may still be affected by node transforms to position, orient, and scale the shape as needed. +This extension allows glTF assets to define implicit geometry surfaces at the root level. This extension does not define any particular behavior for these shapes, but other extensions may build upon it for use in various functions. ## Supported Geometry @@ -25,9 +23,9 @@ Currently, this extension supports the following implicit geometries: - [`ellipsoid`](#ellipsoid) - [`region`](#region) -Only **one** shape may be defined at a time. +The extension may also be extended itself to permit other geometry types. Only **one** shape may be defined at a time. -By default, the implicit 3D volume is assumed to fill the entire shape specified in the extension. However, each shape allows an optional `slice` property to define the subsection of the shape in which the 3D volume is actually rendered. For instance, while the extension may define an implicit sphere, its `slice` can limit the volume to be only half of the full sphere. +By default, the implicit 3D volume is assumed to fill the entire shape specified in the extension. However, shapes may allow an optional `slice` property to define the subsection of the shape in which the 3D volume is actually rendered. For instance, while the extension may define an implicit sphere, its `slice` can limit the volume to be only half of the full sphere. ### Box @@ -41,14 +39,16 @@ The `box` property represents an axis-aligned box that is centered at the origin
-    "primitives": [
+    "extensions": [
       {
-        "extensions": {
-          "EXT_implicit_geometry": {
-            "box": {
-              "size": [1, 0.5, 2],
+        "EXT_implicit_geometry": {
+          "geometries": [
+            {
+              "box": {
+                "size": [1, 0.5, 2],
+              }
             }
-          }
+          ]
         }
       }
     ]
@@ -71,15 +71,17 @@ The `cylinder` property represents a cylinder that is aligned with the `y`-axis
   
   
     
-    "primitives": [
+    "extensions": [
       {
-        "extensions": {
-          "EXT_implicit_geometry": {
-            "cylinder": {
-              "radius": 2,
-              "height": 3
+        "EXT_implicit_geometry": {
+          "geometries": [
+            {
+              "cylinder": {
+                "radius": 2,
+                "height": 3
+              }
             }
-          }
+          ]
         }
       }
     ]
@@ -102,14 +104,16 @@ The `sphere` property represents a sphere that is centered at the origin. The `r
   
   
     
-    "primitives": [
+    "extensions": [
       {
-        "extensions": {
-          "EXT_implicit_geometry": {
-            "sphere": {
-              "radius": 2,
+        "EXT_implicit_geometry": {
+          "geometries": [
+            {
+              "sphere": {
+                "radius": 2
+              }
             }
-          }
+          ]
         }
       }
     ]
@@ -134,17 +138,19 @@ The `ellipsoid` property represents an ellipsoid that is centered at the origin.
   
   
     
-      "primitives": [
-        {
-          "extensions": {
-            "EXT_implicit_geometry": {
+    "extensions": [
+      {
+        "EXT_implicit_geometry": {
+          "geometries": [
+            {
               "ellipsoid": {
                 "radii": [2, 3, 4]
               }
             }
-          }
+          ]
         }
-      ]
+      }
+    ]
     
**TODO** visual example @@ -169,19 +175,21 @@ The `heightFromSurface` property indicates the height of the region from the ell
-      "primitives": [
-        {
-          "extensions": {
-            "EXT_implicit_geometry": {
+    "extensions": [
+      {
+        "EXT_implicit_geometry": {
+          "geometries": [
+            {
               "region": {
                 "semiMajorAxisRadius": 4,
                 "semiMinorAxisRadius": 2,
                 "heightFromSurface": 0.5 
               }
             }
-          }
+          ]
         }
-      ]
+      }
+    ]
     
**TODO** visual example diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json index 39ca274197..ae7a91d965 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "ellipsoid.bounds.schema.json", - "title": "Ellipsoid Bounds", + "$id": "ellipsoid.slice.schema.json", + "title": "Ellipsoid Slice", "type": "object", - "description": "A set of bounds for an implicit ellipsoid surface. Defines the subsection of the ellipsoid that the implicit volume actually occupies.", + "description": "A slice of an implicit ellipsoid. Defines the subsection of the ellipsoid that the implicit volume actually occupies.", "allOf": [ { "$ref": "glTFProperty.schema.json" @@ -12,41 +12,41 @@ "properties": { "minRadius": { "type": "number", - "description": "The minimum radial bound of the ellipsoid.", + "description": "The start of the slice along the radius of the ellipsoid.", "minimum": 0, "maximum": 1, "default": 0 }, "maxRadius": { "type": "number", - "description": "The maximum radial bound of the ellipsoid.", + "description": "The end of the slice along the radius of the ellipsoid.", "minimum": 0, "maximum": 1, "default": 1 }, "minAngle": { "type": "array", - "description": "The minimum angular bounds of the ellipsoid in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "description": "The start of the slice across the angles of the sphere, given in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", "items": { "type": "number", "minimum": -3.14159265359, - "maximum": 3.14159265359, + "maximum": 3.14159265359 }, "minItems": 2, "maxItems": 2, "default": [-3.14159265359, -1.57079632679] }, - "minAngle": { + "maxAngle": { "type": "array", - "description": "The maximum angular bounds of the ellipsoid in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", + "description": "The end of the slice across the angles of the sphere, given in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", "items": { "type": "number", "minimum": -3.14159265359, - "maximum": 3.14159265359, + "maximum": 3.14159265359 }, "minItems": 2, "maxItems": 2, "default": [3.14159265359, 1.57079632679] - }, + } } } \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json similarity index 57% rename from extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json rename to extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json index ffbd656bfe..9cb6b880f2 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/mesh.primitive.EXT_implicit_geometry.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "mesh.primitive.EXT_implicit_geometry.schema.json", - "title": "EXT_primitive_voxels glTF Mesh Primitive extension", + "$id": "geometry.schema.json", + "title": "Geometry in EXT_implicit_geometry", "type": "object", - "description": "`EXT_implicit_geometry` extension for a primitive in a glTF model to represent implicit 3D geometry", + "description": "A definition of implicit 3D geometry.", "allOf": [ { "$ref": "glTFProperty.schema.json" @@ -11,20 +11,20 @@ ], "properties": { "box": { - "$ref": "box.schema.json" + "$ref": "geometry.box.schema.json" }, "cylinder": { - "$ref": "cylinder.schema.json" + "$ref": "geometry.cylinder.schema.json" }, "sphere": { - "$ref": "sphere.schema.json" + "$ref": "geometry.sphere.schema.json" }, "ellipsoid": { - "$ref": "ellipsoid.schema.json" + "$ref": "geometry.ellipsoid.schema.json" }, "region": { - "$ref": "region.schema.json" - }, + "$ref": "geometry.region.schema.json" + } }, "oneOf": [ { diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json new file mode 100644 index 0000000000..86fb48087d --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.EXT_implicit_geometry.schema.json", + "title": "EXT_implicit_geometry glTF extension", + "type": "object", + "description": "`EXT_implicit_geometry` extension to represent implicit 3D geometry in a glTF model", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "geometries": { + "type": "array", + "description": "An array of implicit geometry definitions.", + "minItems": 1, + "items": { + "$ref": "geometry.schema.json" + } + } + } +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json index 539c1bbd0f..abb0dec8f7 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json @@ -22,7 +22,7 @@ }, "heightFromSurface": { "type": "number", - "description": "The height of this region from the surface of the reference ellipsoid in meters.", + "description": "The height of this region from the surface of the reference ellipsoid in meters." }, "slice": { "$ref": "region.slice.schema.json", diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json index ae5ac69349..724b9177f6 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json @@ -1,7 +1,7 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "region.bounds.schema.json", - "title": "Region Bounds", + "$id": "region.slice.schema.json", + "title": "Region Slice", "type": "object", "description": "A slice of an implicit region relative to an ellipsoid. Defines the subsection of the region that the implicit volume actually occupies.", "allOf": [ diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json index 2e3c333a6c..7e822dc556 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json @@ -30,23 +30,23 @@ "items": { "type": "number", "minimum": -3.14159265359, - "maximum": 3.14159265359, + "maximum": 3.14159265359 }, "minItems": 2, "maxItems": 2, "default": [-3.14159265359, -1.57079632679] }, - "minAngle": { + "maxAngle": { "type": "array", "description": "The end of the slice across the angles of the sphere, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", "items": { "type": "number", "minimum": -3.14159265359, - "maximum": 3.14159265359, + "maximum": 3.14159265359 }, "minItems": 2, "maxItems": 2, "default": [3.14159265359, 1.57079632679] - }, + } } } \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md index 2175ffa563..e53b7287da 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md @@ -26,22 +26,18 @@ Typically, glTF mesh primitives use the `POSITION` attribute to store positional ``` "primitives": [ { + "attributes": { + "_TEMPERATURE": 0 + }, "mode": 2147483648, "extensions": { - "EXT_implicit_geometry": { - "box": { - "size": [2, 2, 2] - } - }, "EXT_primitive_voxels": { + "shape": 0, "dimensions": [8, 8, 8], "padding": { "before": [1, 1, 1], "after": [1, 1, 1] - }, - "attributes": { - "_TEMPERATURE": 0 - }, + } } } } @@ -60,27 +56,7 @@ The relationship between `dimensions` and the grid geometry is explained in deta ### Box Grid -A **box** grid is a Cartesian grid defined by `x`, `y`, and `z` axes with equally-sized boxes. A voxel primitive that is based on a box grid may be defined like so: - -``` -{ -"extensions": { - "EXT_implicit_geometry": { - "box": { - "size": [2, 2, 2] - } - }, - "EXT_primitive_voxels": { - "dimensions": [8, 8, 8], - "attributes": { - "_TEMPERATURE": 0 - }, - } - } -} -``` - -The `dimensions` correspond to the subdivisions of the box along the `x`, `y`, and `z` axes respectively. +A **box** grid is a Cartesian grid defined by `x`, `y`, and `z` axes with equally-sized boxes. The `dimensions` correspond to the subdivisions of the box along the `x`, `y`, and `z` axes respectively. ![Uniform box grid](figures/uniform-box.png)

A box grid spanning from -1 to 1 in all three axes, subdivided into two cells along each axis. The origin is in the center of the box.

@@ -98,27 +74,6 @@ A **cylinder** grid is subdivided along the radius, height, and angle ranges of The cylinder is aligned with the `y`-axis in the primitive's local space. As such, the `height` is subdivided along that local `y`-axis. Subdivisions along the `radius` are concentric, centered around the `y`-axis and extending outwards. The `angle` is subdivided around the circumference of the cylinder. -A voxel primitive that is based on a cylinder grid may define the `cylinder` property like so: - -``` -{ -"extensions": { - "EXT_implicit_geometry": { - "cylinder": { - "radius": 2, - "height": 3 - } - }, - "EXT_primitive_voxels": { - "dimensions": [8, 8, 8], - "attributes": { - "_TEMPERATURE": 0 - }, - } - } -} -``` - [TODO](image) ### Ellipsoidal Grid @@ -178,10 +133,40 @@ The padding data must be supplied with the rest of the voxel data - this means i This extension may be paired with the `EXT_structural_metadata` extension. +``` { "extensions": { + "EXT_implicit_geometry": { + geometries: [ + { + "box":{ + "size": [2, 2, 2] + } + } + ] + }, "EXT_structural_metadata": { - + "schema": { + "classes": { + "voxels": { + "properties": { + "temperature": { + // ... + } + } + } + } + } + propertyAttributes: [ + { + "class": "voxels", + "properties": { + "temperature":{ + "attribute": "_TEMPERATURE" + } + } + } + ] } }, "meshes": [ @@ -191,18 +176,16 @@ This extension may be paired with the `EXT_structural_metadata` extension. "attributes": { "_TEMPERATURE": 0 }, - "mode": 2147483648, "extensions": { "EXT_primitive_voxels": { "dimensions": [8, 8, 8], - "bounds": { - "min": [0.25, 0.5, 0.5], - "max": [0.375, 0.625, 0.625] - }, "padding": { "before": [1, 1, 1], "after": [1, 1, 1] } + }, + EXT_structural_metadata: { + propertyAttributes: [0] } } } @@ -210,6 +193,7 @@ This extension may be paired with the `EXT_structural_metadata` extension. } ] } +``` ## Optional vs. Required This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json index 61636d8a67..98e7939131 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json @@ -3,7 +3,7 @@ "$id": "mesh.primitive.EXT_primitive_voxels.schema.json", "title": "EXT_primitive_voxels glTF Mesh Primitive extension", "type": "object", - "description": "`EXT_primitive_voxels` extension for a primitive in a glTF model, to specify voxel grid geometry for volumetric data", + "description": "`EXT_primitive_voxels` extension for a primitive in a glTF model to indicate voxel-based volumetric data", "allOf": [ { "$ref": "glTFProperty.schema.json" @@ -12,7 +12,7 @@ "properties": { "dimensions": { "type": "array", - "description": "Dimensions of the voxel grid. x/y/z for a box, r/z/theta for a cylinder, lon/lat/height for an ellipsoid.", + "description": "Dimensions of the voxel grid. The values are interpreted with respect to the shape of the grid indicated by `EXT_implicit_geometry`.", "items": { "type": "integer", "minimum": 1 @@ -21,6 +21,7 @@ "maxItems": 3 }, "padding": { + "description": "The optional padding of the voxels.", "$ref": "padding.schema.json" } }, diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/padding.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/padding.schema.json index ad94b3ed0c..70b59e5d0b 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/padding.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/padding.schema.json @@ -3,7 +3,7 @@ "$id": "padding.schema.json", "title": "Padding", "type": "object", - "description": "The padding property specifies how many rows of attribute data in each dimension come from neighboring grids.", + "description": "The padding around a voxel grid. Specifies how many rows of attribute data come from neighboring grids in each dimension.", "allOf": [ { "$ref": "glTFProperty.schema.json" From 74113f2f42b70081865776fd9dec5fee8520b634 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Wed, 12 Jun 2024 10:23:44 -0400 Subject: [PATCH 10/17] Fix broken uris --- .../EXT_implicit_geometry/schema/geometry.schema.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json index 9cb6b880f2..be150f3449 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json @@ -11,19 +11,19 @@ ], "properties": { "box": { - "$ref": "geometry.box.schema.json" + "$ref": "box.schema.json" }, "cylinder": { - "$ref": "geometry.cylinder.schema.json" + "$ref": "cylinder.schema.json" }, "sphere": { - "$ref": "geometry.sphere.schema.json" + "$ref": "sphere.schema.json" }, "ellipsoid": { - "$ref": "geometry.ellipsoid.schema.json" + "$ref": "ellipsoid.schema.json" }, "region": { - "$ref": "geometry.region.schema.json" + "$ref": "region.schema.json" } }, "oneOf": [ From c9c6abf003573a7c06e887bebe127c217e85d3a1 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Wed, 12 Jun 2024 10:32:14 -0400 Subject: [PATCH 11/17] Fix typos in region slice --- .../EXT_implicit_geometry/schema/region.slice.schema.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json index 724b9177f6..3ee3a46054 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json @@ -30,7 +30,7 @@ "items": { "type": "number", "minimum": -3.14159265359, - "maximum": 3.14159265359, + "maximum": 3.14159265359 }, "minItems": 2, "maxItems": 2, @@ -39,13 +39,13 @@ -1.57079632679 ] }, - "minAngle": { + "maxAngle": { "type": "array", "description": "The end of the slice along the angles of the reference ellipsoid, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", "items": { "type": "number", "minimum": -3.14159265359, - "maximum": 3.14159265359, + "maximum": 3.14159265359 }, "minItems": 2, "maxItems": 2, @@ -53,6 +53,6 @@ 3.14159265359, 1.57079632679 ] - }, + } } } \ No newline at end of file From 60a4b4f2ab83e0730ae34e995e18b23546995948 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Wed, 12 Jun 2024 11:29:08 -0400 Subject: [PATCH 12/17] Add 'shape' to voxel extension --- .../2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json | 3 ++- .../schema/mesh.primitive.EXT_primitive_voxels.schema.json | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json index aee411a61d..4b345e4812 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json @@ -14,7 +14,8 @@ "type": "array", "description": "The size of the box in meters.", "items": { - "type": "number" + "type": "number", + "minimum": 0 }, "minItems": 3, "maxItems": 3 diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json index 98e7939131..ea26c11364 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json @@ -10,6 +10,10 @@ } ], "properties": { + "shape": { + "type": "number", + "description": "The index of the shape in `EXT_implicit_geometry` that the voxel grid adheres to." + }, "dimensions": { "type": "array", "description": "Dimensions of the voxel grid. The values are interpreted with respect to the shape of the grid indicated by `EXT_implicit_geometry`.", From cd6749e0eb0e3d5ebb5bb6cf7dc948fe3ddea039 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Mon, 17 Jun 2024 14:20:26 -0400 Subject: [PATCH 13/17] Make shape integer + required --- .../schema/mesh.primitive.EXT_primitive_voxels.schema.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json index ea26c11364..52082ff04c 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json @@ -11,7 +11,7 @@ ], "properties": { "shape": { - "type": "number", + "type": "integer", "description": "The index of the shape in `EXT_implicit_geometry` that the voxel grid adheres to." }, "dimensions": { @@ -30,6 +30,7 @@ } }, "required": [ + "shape", "dimensions" ] } \ No newline at end of file From 981c69b919589cbf1edb7ab0af3e9ae35999054e Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Mon, 17 Jun 2024 14:30:51 -0400 Subject: [PATCH 14/17] Use glTFid instead --- .../mesh.primitive.EXT_primitive_voxels.schema.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json index 52082ff04c..298b7b4db8 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json @@ -11,12 +11,16 @@ ], "properties": { "shape": { - "type": "integer", + "allOf": [ + { + "$ref": "glTFid.schema.json" + } + ], "description": "The index of the shape in `EXT_implicit_geometry` that the voxel grid adheres to." }, "dimensions": { "type": "array", - "description": "Dimensions of the voxel grid. The values are interpreted with respect to the shape of the grid indicated by `EXT_implicit_geometry`.", + "description": "Dimensions of the voxel grid. The values are interpreted with respect to the shape indicated by `EXT_implicit_geometry`.", "items": { "type": "integer", "minimum": 1 From 9e8df1983e61e70537c8672a8caa55ef7aacdeae Mon Sep 17 00:00:00 2001 From: Janine Liu <32226860+j9liu@users.noreply.github.com> Date: Thu, 27 Jun 2024 14:03:44 -0400 Subject: [PATCH 15/17] Delete extraneous characters --- extensions/2.0/Vendor/EXT_implicit_geometry/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md index 88c69e7432..926334a2a4 100644 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md +++ b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md @@ -45,7 +45,7 @@ The `box` property represents an axis-aligned box that is centered at the origin "geometries": [ { "box": { - "size": [1, 0.5, 2], + "size": [1, 0.5, 2] } } ] @@ -157,7 +157,6 @@ The `ellipsoid` property represents an ellipsoid that is centered at the origin. -``` ### Region @@ -196,7 +195,6 @@ The `heightFromSurface` property indicates the height of the region from the ell -``` ## Optional vs. Required This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. From 1244f7981402f42122a62085c88294f996785d91 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Fri, 25 Oct 2024 15:55:14 -0400 Subject: [PATCH 16/17] Remove EXT_implicit_geometry, add EXT_implicit_ellipsoid_region --- .../EXT_implicit_ellipsoid_region/README.md | 64 ++++++ ....EXT_implicit_ellipsoid_region.schema.json | 66 ++++++ .../Vendor/EXT_implicit_geometry/README.md | 200 ------------------ .../EXT_implicit_geometry/figures/box.png | Bin 22453 -> 0 bytes .../figures/cylinder.png | Bin 22808 -> 0 bytes .../EXT_implicit_geometry/figures/sphere.png | Bin 26088 -> 0 bytes .../schema/box.schema.json | 27 --- .../schema/cylinder.schema.json | 32 --- .../schema/cylinder.slice.schema.json | 56 ----- .../schema/ellipsoid.schema.json | 31 --- .../schema/ellipsoid.slice.schema.json | 52 ----- .../schema/geometry.schema.json | 46 ---- .../glTF.EXT_implicit_geometry.schema.json | 22 -- .../schema/region.schema.json | 37 ---- .../schema/region.slice.schema.json | 58 ----- .../schema/sphere.schema.json | 26 --- .../schema/sphere.slice.schema.json | 52 ----- .../2.0/Vendor/EXT_primitive_voxels/README.md | 17 +- ...primitive.EXT_primitive_voxels.schema.json | 4 +- 19 files changed, 141 insertions(+), 649 deletions(-) create mode 100644 extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/README.md create mode 100644 extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_ellipsoid_region.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/README.md delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/box.png delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/cylinder.png delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/figures/sphere.png delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.slice.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json delete mode 100644 extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json diff --git a/extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/README.md b/extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/README.md new file mode 100644 index 0000000000..f362d75ea8 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/README.md @@ -0,0 +1,64 @@ +# EXT_implicit_ellipsoid_region + +## Contributors +- Sean Lilley, Cesium +- Janine Liu, Cesium + +## Status +Draft + +## Dependencies +Written against the glTF 2.0 specification. + +## Overview + +This extension adds an ellipsoid-based region as an additional shape type to the [`KHR_implicit_shapes`](TODO) extension. Ellipsoid-based regions are commonly used in geospatial applications to describe volumes that conform to the curvature of the Earth, or other bodies. + +`EXT_implicit_ellipsoid_region` is an extension on the `shape` object in `KHR_implicit_shapes`, where `type` should be set to `"ellipsoid region"`. + +The extension's properties specify a region extruded from the surface of an ellipsoid. The ellipsoid itself is not necessarily part of the volume; it is merely used as reference from which the actual region is defined. However, a region may be extended beneath the surface of the ellipsoid, and thus can possibly contain the entire ellipsoid volume if desired. + +### Details + +The reference ellipsoid is centered at the origin. The `semiMajorAxisRadius` indicates the radii of the ellipsoid in meters along the `x` and `z` axes. These axes are made equal as a conscious decision to simplify the math implemented for rendering regions. + +The `semiMinorAxisRadius` indicates the radius of the ellipsoid in meters along the `y` axis. + +The `minHeight` and `maxHeight` properties indicates the heights of the region from the ellipsoid's surface, in meters. The `minimum` height should be lower a value, but not necessarily closer to the surface of the ellipsoid. For example, `maxHeight` may be `10` while `minHeight` is `-100`. + + + + + + + + + +
+ Example +
+    "extensions": [
+      {
+        "KHR_implicit_shapes": {
+          "shapes": [
+            {
+              "type": "ellipsoid region",
+              "extensions": {
+                "EXT_implicit_ellipsoid_region": {
+                  "semiMajorAxisRadius": 4,
+                  "semiMinorAxisRadius": 2,
+                  "minHeight": 0,
+                  "maxHeight": 0.5
+                }
+              }
+            }
+          ]
+        }
+      }
+    ]
+    
+ **TODO** visual example +
+ +## Optional vs. Required +This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_ellipsoid_region.schema.json b/extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_ellipsoid_region.schema.json new file mode 100644 index 0000000000..c9166b4997 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_ellipsoid_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_ellipsoid_region.schema.json @@ -0,0 +1,66 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_implicit_shapes.shape.EXT_implicit_ellipsoid_region.schema.json", + "title": "EXT_implicit_ellipsoid_region extension on KHR_implicit_shapes.shape", + "type": "object", + "description": "`EXT_implicit_ellipsoid_region` extension on `KHR_implicit_shapes.shape` to represent an implicit ellipsoid region in a glTF model. Useful for geospatial applications, such as Earth-conforming voxel data.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "semiMajorAxisRadius": { + "type": "number", + "description": "The radius along the semi-major axis of the reference ellipsoid in meters. Corresponds to the radii along the X and Z axes.", + "minimum": 0 + }, + "semiMinorAxisRadius": { + "type": "number", + "description": "The radius along the semi-minor axis of the reference ellipsoid in meters. Corresponds to the radius along the Y-axis.", + "minimum": 0 + }, + "minHeight": { + "type": "number", + "description": "The minimum height of the region relative to the ellipsoid's surface, in meters. May be negative." + }, + "maxHeight": { + "type": "number", + "description": "The maximum height of the region relative to the ellipsoid's surface, in meters. May be negative." + }, + "minLatitude": { + "type": "number", + "description": "The minimum latitude (a.k.a. polar angle) of the region, in radians. Must be in the range [-pi/2, pi/2].", + "minimum": -1.57079632679, + "maximum": 1.57079632679, + "default": -1.57079632679 + }, + "maxLatitude": { + "type": "number", + "description": "The maximum latitude (a.k.a. polar angle) of the region, in radians. Must be in the range [-pi/2, pi/2].", + "minimum": -1.57079632679, + "maximum": 1.57079632679, + "default": 1.57079632679 + }, + "minLongitude": { + "type": "number", + "description": "The minimum longitude (a.k.a. azimuthal angle) of the region, in radians. Must be in the range [-pi, pi].", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + "default": -3.14159265359 + }, + "maxLongitude": { + "type": "number", + "description": "The maximum longitude (a.k.a. azimuthal angle) of the region, in radians. Must be in the range [-pi, pi].", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + "default": 3.14159265359 + } + }, + "required": [ + "semiMajorAxisRadius", + "semiMinorAxisRadius", + "minHeight", + "maxHeight" + ] +} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md b/extensions/2.0/Vendor/EXT_implicit_geometry/README.md deleted file mode 100644 index 926334a2a4..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/README.md +++ /dev/null @@ -1,200 +0,0 @@ -# EXT_implicit_geometry - -## Contributors -- Sean Lilley, Cesium -- Janine Liu, Cesium - -## Status -Draft - -## Dependencies -Written against the glTF 2.0 specification. - -## Overview - -This extension allows glTF assets to define implicit geometry surfaces at the root level. This extension does not define any particular behavior for these shapes, but other extensions may build upon it for use in various functions. - -## Supported Geometry - -Currently, this extension supports the following implicit geometries: -- [`box`](#box) -- [`cylinder`](#cylinder) -- [`sphere`](#sphere) -- [`ellipsoid`](#ellipsoid) -- [`region`](#region) - -The extension may also be extended itself to permit other geometry types. Only **one** shape may be defined at a time. - -By default, the implicit 3D volume is assumed to fill the entire shape specified in the extension. However, shapes may allow an optional `slice` property to define the subsection of the shape in which the 3D volume is actually rendered. For instance, while the extension may define an implicit sphere, its `slice` can limit the volume to be only half of the full sphere. - -### Box - -The `box` property represents an axis-aligned box that is centered at the origin. The `size` property indicates its size in meters along the `x`, `y`, and `z` axes. - - - - - - - - - -
- Example -
-    "extensions": [
-      {
-        "EXT_implicit_geometry": {
-          "geometries": [
-            {
-              "box": {
-                "size": [1, 0.5, 2]
-              }
-            }
-          ]
-        }
-      }
-    ]
-    
- -
- -### Cylinder - -The `cylinder` property represents a cylinder that is aligned with the `y`-axis and centered at the origin. The `radius` and `height` properties indicate the dimensions of the cylinder in meters. - - - - - - - - - -
- Example -
-    "extensions": [
-      {
-        "EXT_implicit_geometry": {
-          "geometries": [
-            {
-              "cylinder": {
-                "radius": 2,
-                "height": 3
-              }
-            }
-          ]
-        }
-      }
-    ]
-    
- -
- -### Sphere - -The `sphere` property represents a sphere that is centered at the origin. The `radius` of the sphere is specified in meters. - - - - - - - - - -
- Example -
-    "extensions": [
-      {
-        "EXT_implicit_geometry": {
-          "geometries": [
-            {
-              "sphere": {
-                "radius": 2
-              }
-            }
-          ]
-        }
-      }
-    ]
-    
- -
- -### Ellipsoid - -The `ellipsoid` property represents an ellipsoid that is centered at the origin. The `radii` property indicates the radii of the ellipsoid in meters along the `x`, `y`, and `z` axes. - -**TODO** visual example - - - - - - - - - -
- Example -
-    "extensions": [
-      {
-        "EXT_implicit_geometry": {
-          "geometries": [
-            {
-              "ellipsoid": {
-                "radii": [2, 3, 4]
-              }
-            }
-          ]
-        }
-      }
-    ]
-    
- **TODO** visual example -
- -### Region - -The `region` property represents a region extruded from the surface of a ellipsoid. The ellipsoid itself is not part of the geometry; it is merely used as reference from which the actual region is defined. - -The reference ellipsoid is centered at the origin. The `semiMajorAxisRadius` indicates the radii of the ellipsoid in meters along the `x` and `z` axes. The `semiMinorAxisRadius` indicates the radius of the ellipsoid in meters along the `y` axis. - -The `heightFromSurface` property indicates the height of the region from the ellipsoid's surface, in meters. In other words, the region begins atop ellipsoid's surface, and is then extruded outwards to the specified height. - - - - - - - - - -
- Example -
-    "extensions": [
-      {
-        "EXT_implicit_geometry": {
-          "geometries": [
-            {
-              "region": {
-                "semiMajorAxisRadius": 4,
-                "semiMinorAxisRadius": 2,
-                "heightFromSurface": 0.5 
-              }
-            }
-          ]
-        }
-      }
-    ]
-    
- **TODO** visual example -
- -## Optional vs. Required -This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/box.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/box.png deleted file mode 100644 index ace531d896b60a47102a32269a888d03f248052a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22453 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 bh!UhzHg5k7ZyN`rNeKr#XWLR6-@AVSda|9v diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/cylinder.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/cylinder.png deleted file mode 100644 index 2511611a7860843bcaeee157bb31d4e727deb0ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22808 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%0Dp771qc%2ve=zc}*jiG5gmbSgBA~`un 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 Z&b;t+NNS?Az%FcYgc*GJpZ+KR{2#H}BX9r! diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/figures/sphere.png b/extensions/2.0/Vendor/EXT_implicit_geometry/figures/sphere.png deleted file mode 100644 index 4b514fd87cf096322e9a65aed92b4c920e421bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26088 zcmd43`9G9@^fx|sk}X9M3Zd+KM2aa&mLmI_l65R&tf9?TA(cIQ_I;lrdr=r$c4LW* z7*u2r_nG(SzVCnF`@{F1$CSroX0F%uTF&x3=RD69p|7jSbcE{&0)b$k`b56X-#W%z?2P{}DG z5RYG{<0ue_=hS#6n2w+W3cfje6-|Xe&@&`)BM?`#`Uvom`con;0>OIh|CdY7@FpfE z9vmD*s~uo(3GIE8yy(50faH&eibA=$8KV^t`X}TRAN%?S1n9lLC=D-p`Hkq{@yW@Q zH*eIDwzjr8IXO;xbcli{L|RrB1A}i$XktQgaz{tUp@*TRg~h+UUrl>^dvvt4G7)r$ z3*=wL#t3MJhJ>6G6#TKUFukeCDPbWZB9b6w`xMD<`-TZ&NQq}UbHT{S===BYGKpfB zFI!2(i}otY%fl5HFJ43Pd%~a}Ws_@9v zR4XL%`Lk!wJX6eET~~1Eg@60|8X6j=xm1toLSX7=S2v~Rm8+|&CmU%JrBYMBvkTDJdy2vE|kfMpIMMJNa^AV%-xH z$rurYJ_T&<#j%MAy;Kz?Vc~_`w4l02JD$G2*x1+;Bz;6WB?yhjK!1NC>`rX#(CTD; zxdPLbTd=0g`S0JQgZ}yQA31u|%hU574;{jg3iiW{hleLNHkL>v8syxPmXfmhzhA^l zSl+yK>nI~5w}Q(_k{BXghCKMv^0JEO4=rbB(cv75@S{oGSDq_hy3}-du=k9PCn*7&!0cf&(Ei(ruJUmD@sY>Az2{OZ^Dp&V6}P0 z#o}UOULGE%H7;Yay()7{OP$Kc5qSww>KQgEpcIHzj*|cHnsCo(*rHdN5|MW@^&;gN zv#>SUEvt)*Hl*!E4ZZRnO2ma{(y+gnzniDKw^PFJZ;bfZr~bDXTG%OF^KZxe1L|=j zxt@1ka5;|=DG+x-JHz|3lU@uKa=NKjips{^J&Dj4heM*@{~fmYr|?9G@C!*<1}a1W zSsaozb`s|+oP$-G)Yi9%tGXKt6o?_RB;C|>>-|Gu4BpjrT`5+xx_KMTi_lksVe*#i z5(oq1e~p9v6(r@W3k*~I5Lf2mIA=X@HA~B}gO`HwPu`=K;0`L}xpcG;3`5j2ROFr^8DQO=8~yYKaGx89-C(}UnR#^>HKAii#lEF z^#hx>E_>(ZdLWNQf)LGPIxhLYd${4+UWKDKz2q(#t7u>?5yX6+TPZ$(yT0W@H9Jum%5#RaJp-4 z9qg=%p0u#CvNAUh(3{pYHXix(>C@=w_Hgi&x5@myF}rL%q{4|6q3Yrk&~hH0;EmqZ z)zyF_>7}KTFaxv9+}otlZzfe+LH#MU6}TZfs0$((LZ;)(*>#3@a!osLbPXrMCj>y;sIvErV9Z ztJQ)MaX4I4Q}7k?t2ys>R^KdQiwV!!$f z{wz&!i@V#~SR5{2Hq}3AFS@S2{^g4o6_u5e7TDKGNlEeXJ`QnKh4co z+}zwYdZiKcoJrg>sc`E1n-gwL@Lvcc=K=QjL`%z)!X+3QJgm&Jpb!qo{Lbg7g`O?|pDG|A01E;X0N$+D@?ZqkB=0o%BZ}vex0tl_ZKZl=N5@kf962t|_@?
&bgY z=gyt8c$u4>{oww6k=_aLrO67e?XOO?w6ys9`yXYebfA}0Yz`h89_Cf`|2tZ4cmDkO z&eq}n{)lk$D?u6K)D*NoD)dpf)oIl{MJ@OM79*^e`q6X##oC9+NPLy!w;a8+%iwDR z0}1^{#u@QUSB8d$!dUnYHb$&_)6{}V#TIAJp0#)w;7gys`R@4y;U)tE0}SyhI$Bav z(l`~Q={;<28;hEX$1HMrgw_m@%Q&e2!q5J!dY@mqH*eN$NVb9?Vq1AHKf2iF%c4t- z$1kp~5<_PIs%&g*bgqM5pci^9%WR(X9i~xYg&k0R*Oio%0ydY&nt~6DC;UKo&>=ir zT%A(MM>}W><*A0fWVc2fMrZ9kAkUtZOAk7ahqgR623ewG zK7G-Brny+-H()Ud^BR}gPZ7(W6nV#zxIg85{P<{ZbLDWSHyGp;E32!k3!9sA$!GQT zS&dP9gQlcSBmN3S`G-8nNwO4!_0kAqKHs~&y)6bK^}JUCJ9hLLg~~-a#c)k0r==0= z;J|;|9yp7h6b5?w8D(?l_|ts2q{?pz4>Q#4EP z-0t3dymd`=^#dNJnUZweRbLco85Bg)q|9db@1l#rld^a3-Yriz1;hRkF8kZt+r!E% z8y_j{a?9~0aX%NlbSYqeccZh1nV#OH;{I0x4n3ALa39+f_z*M~cAQXdN4NFiR7sO@ zk%_IN<5y*_W@~lyGbzKncLRU7(9yB*{+KEU_e37H%7Kk!k+iCHHBL`WZfhFr`)3wT zZEJP1i^t5w2ZG=?@nWXO zPM_{pjz7aAfxU=Ld&_Cx^~>_%!v(S}TqQs#aRWI#JX~m0Y=(6|D-lG6hKtVx1_n;l zx=okaY6JvaVvFQfM16g8?puzIU5a*dAAu#Wt}e;^(bVwpb!1~>V_MMeVmO^+_}{9qi;-jC^OIQa%J!3-Je-S8Vpu<{A`0|8RfR9I(vJkAuuYjtPj^R zHr`5nnCiEVSJctbFBMt8h|3l`q90roIE^{*>mZRy6-QRd(5>L z6^ZeCdU)*o%!-DftXcWE1MIXEtOy56)PTh%ghSMom6Zh!#Waj^8@;l!0;?c=^po{D zdE&%IY4ASdM9Gt+4BV5%xVX5j>EOc-zTh8I&m|lF-tqFPB7-E0OwR(rUVLXyS9>ak z_4W-dtx>Fpos-iAwz2W?64Odr?wu#fFhJy7M>N@e$|SxDZ;#^P2CKor(XRZC{(p8{ zHpzV6KOg{ZzCHFZ%_EFm=+-vO+QPyDpP^>)YK?W`Od*U#C*N4tgKwxusMFP zzju4$j2N7)+s8lcQw;$c>gwS?yAx%>&V@1a+)H7sqHHIm8;y;Pb;V0cii@AiEGsJm zKVNRwQNc{}`^x3LyY2pXs|WJ}6OoyfW$nLs zZa4#BC?GG7nQM;(&x8E&^CuQV8V0;DoN=WJOg3|NcD7{GKbhK0VHFh>W##ed=`@T; z@$0(=wgqnCB*Id;-#QU)SW{a|T3qxHl_>wt^_v3E^l|S`2cO-&d*kEdVq#)&v$TL! zrQwJwdZWC2QzN6{_DF6VUDVFbPTh|rcNYDwh2LI|O zPbeS?cJc(vose)6B~2_ctpte_aABk`fVjkJd8~2)uQZ^yS}I0lzx|q(_V{}#^wfHiLPDV!TGr?nFJ9!P`oG}5e=F_s z{!7Wm-|OpkJU0vXjglTdxbNhAuU$EOGYLZWtSq}bckTf00<33lW(L603sc@szsfhI znl5uE-)m_w|J12d$iHh{l5P_<__47>jK~?DVTzfr!fF2w_I?4z&_zzvxSE&QT!okb zHp(VJobH6a$Z>E&rcFT&7814P<)*N3foPRh<>Rbu)tg>yF*u6UxmGJnOG_|jVEV(q zeE$3Zj9}LFNH`#B20RlBAi0M_1$V&(3S`3EO063FKZUauX;3)iK{W5u7RrRY58ei( zV)0vUr7m^rGZNwVl_e4hk~Js!`1FvB9AewEFC{H3EltCo9^QHVG~7$-L5cL!r%xX} zdNeRF0N^$1w9>tM_hkJ4I)D_~ND)K#jLppIY+5K+qlUJo0)Fi*q&-ZbM{Q}he9qW^ zuUa0K6#BKR>t#g5ja#<_GxPHD^wjnZ_4J}KBCJP?^q=i{9sJt?xbQA64opn&)}&9K z>*M+bh#U5|rX@`)o`-L)OlVu}OI*toCPL253%ePd8U# zUU^(Nt=X0x5A^|IAuad-%<-|9+S)CEJR~BqU73v@k;J_^mZOtATxT_+S!4Kc;VD=cdNnkQ9g-RT@qSh`vX0lrJ#%P;|mLO{+~KmLLY3g6*29a~~T z!lQ$o1rv8>pU~=g_ga{Hytujdk1uTeM;I9=>U~NhA{a>ezZHYdWAjQ2!&C?52*1C# zO-@b*?{ADuO-%`CM*Ss?u+$p0^4NrM5y+Vx;j~9<08)|1d3g`g4*!K=_z}1Le#DSn zk*$kMk-o@O(B2B@`x^{@pM?WzJD|F{8X$#^uC7ofoae9c>X#UPtT}TI2R7bZgkL~_ z<@7}xJ39>|2^L(7;vpf^Gu%_S53WCWF#m67UHj(Ea0h@quz#QhSGr5An=Ye?-JP8` z`TchnbJezIsCan(tcaAT_*V8(W=IeeoekftcL&ziI{~=1XHhXVxomyC*mit z9$Afzmr45RSEbCEgU?G!x&er_a8*0}x1Q&E_Jw4l#i&V}G7SOjaSE9ClmPWr5aT#W z>#4~}JopP%ImLfC2=2fSfdf3&U;nFd4+N@QmwGEJt2PWnjn(t;@PGh-@Dc(eFlr#d zNsv_x=2uek11SRQg!~ICR%BBC6!y-w%5Az4&?9UASmi^$fMw~`Qb9xsx^1PRq5=#F zSg`P)5N1V&hugsN3yV!F?O~&k$4{UB2ax{csqc=Yab`TzVODy&4Qvwx>d2~qt<^ts z9dKVn6>3s>mHF3sgPcd;C{4<8=F7sk{ux7H3_5$q*jN(@TmIR>oLc6=$asLi%PSpI zx+iqUI5>C6h$2|$x5_+q;Icf*U8u>T)a4T3(d-)v2`HWauZ?7$4zpOYGver1=p~4Jteiz2y6woE>0u9j{t^t9RL!hwkJRv~x8`Gr$EQ zQPG#-#NMMQ`?oE`%P@DIKEk+&s%ju$mxhK0NbrDXn@qp@ zjJ#2M@U!n=UQ)wpS$H4)p1BHXnBj=WJ_+I@$^d-9!!50>RF{|U{9Et6Juxfvi}cp6 zi}`jk2x1stkQNd$3IGm%t*ksqq4y1&)T`D8XlG~$s5mw?bqWqd9!0na16qeMN^mW5 z+iV$--7B`d+yktxqoX4v8Qz^YfSCl@b{AiRoGz!hncPXT^>4JhCC4$Wa=Q%(7 z`DKKNf&#}@LNi^#vNjFL9N2IA70O@$><%%tP#%z$kPV&h5j&a-oK zrX3W#wjoJ1;gOMnq~h9ehw&=M=|}5Kq>G4jf0#IV=P{USh{+#4`uOrCBMI5eC|7HQ z^;#TwbxIbXOW>nN_w4M>9b*6iY<_7Sv@;*VX>}&^ds`Ua9aS1=5_D} z6y@iCZEl|V-)!j?K@{@B5z=#JD{H>p_soSzB9+w+_Owm@h^Eii$AM)9Zb6 zPWz^|HU@)f0+-4raJ@{I+U2xl=kQSf=Ogkfa-KiF0FnfAmzl{AIw@_}4nHV(B3*kC zl>e-Nz_akF;KO|eb|JFjdf9S1ujCL?=jWo;db+yoc<7)iAg&H5gRuUedZILteP+9L z{zU=^ZCYAdIMsbf1S~F^;yfQf!~mwB(j-Gj0RTM&4Wgo=$tr%HE-qqlvdyWU0dcTV zVE$7vr+xKLqF>_8-5Ty184+h^pWbyuG$+bC4?CAOTt}9dmxGl6wdXyaWNygJqx`o^ zvWfLJp!2XWI?}~vtMQGB%yzTk^N$+<^Q#I9J`cAF+_;-~t6iB{g;lQB_g!pk1K@I` zoZHk#K=X+zB>KGsATL0mm?2Km`N#X{x#&qoD$uIcChYudCjFvycoW}Awpjuu=M$V_w za`5o1kVsw1%nor?r0j-3&*Ae|DnI@m&}J9b70hJfRsd}$Pv$6I+-0QH8jg7@!T~@d zU^McHoH+`?pNxV6%Go&p@DOZ9Kq!%;#%Ibex40M&xzzO^zjJxl{-SG|1?s+gLz#^5 z-p|5<0G`RT<4M3XB1ahnKpmeyv%%5)1=Ilx)Vcp5*X=`YuQH88CT!_*vSUz#JV{NB z!m!5-Z#pjIrV?J>WA+n#2?EDepglElu4Arsrnli>mju!O-Me@B0{^m+#N1i>2=1~hRLOArld3!C46}u}E4<-+B8dwNTLg43 zTR$kKsj+c~GV?!Gx!UHcni`05#*NVPlz0EAaZb>sA21e zl$x~nvI%)m6%I+O<%I>|_%1LRcxA?aOmelai!AGF>gy+(n-NqftaeFU4T!$fPZH@r zpnL4tG2OJwcx7e+Lz20ajEoG}PfmWbkG_BUGBn@}ZRy>;*2^mFQYfE)hugCpIl`X_ zs`+K!S3i=dj%I8R_|>3^giJQ!*JlLcLI-|feqrHodoH@DlAL;BY|GFH!(M73&x?$Q znd#g63**bwnO3JDhRwZ|sE&jZqJyI&DEPtYBy+?M&z=8V7T7>+E7R78T$bdxwubMQ z?=LMal}W#BhasCGCf3&0j&Oi%1lV1$OV2-<^dbV%T2&L}90wqfi*SHw1dv(LTyq+L z1!bJY0R-J_F@Pgz3GSsie!Dn3z`p`0X&p3L)`$Co1D9NFjsY_k68bJKF5Sw^i12C1 zrvf&kB!X?xfI($@m8sV?{L z4-yC;9lr^|xq3UGBE3nElQA5uA3BF=huN;Y4n2CRHE{V6sNhL&XSg*H7B@>vfSf?W zB_9d0=d&b_;_M6=vY;Q2IIBaMku?J+udl1iyk$}b8Rd!baqyh2Ii-b#r7xR^zpvQ$rmie3Xd)pV(id^x z2~qtQJA4rw0`mU-`_DxQzh{*F1Kim$NHg`p&88!S`yx3@{mQtQWcErQ7q9&Q!Ww^N7T-X%$zJxdDiCSU3d2Qg@jVTrau3tsxx>g$@kIN(gb79-t!R zrq4i#D*|X`*yD-{p?D9Vd!~%rl!}j!PaSTZS_*DN4<&@6(o%@ z4Ld%4dd}_rYr3hap&|wp_>w6JQlmZ~edm&tT!%%QgS6BZ@Tsp0GG zj~~0^Esc!g5)!^Bzl8592jMuunjeF?V>2?&k}jT6KY!wLw$4V8!GAL|F*RkoZDDbm zBxXj3$KL_$3seT%g44bRL*vcLl;H+Y+`-!VK+aB2kA-w`oCc2{0P`09Wpa`ScsWno zMl|DkZO~GjdHU7&N zdUoQibX?;1oK7f_$=SA251U@80wO`VI@9(u2DDHg!G)lFw+94l?6Z@L2aO6jBLvnA zhG~HBV3paJW7p+Rv=bcYz;%PNY46 zgb=*Tbt(8enChX7g;x%T8_6~|G-*bi{<@!eq&bcKn$iZ3E9~bN54@#`iSNp|Je(e7 zQu34M&#C!azhNn^oc`F*fU7shu_(@PCz($|%>;5h;SPg&w~HztZ-;1oJc`*c%|-m- zmcB;~>$CiAY&Ho|DB$A`6}Sa#g%f6D zX$YhXs)Ub!&fKXTPsa_t2+$+_{0TuuD2Ai&h*izLsV2g;McxNuGw>QDG5#>3k?1Oa zZBtVdnX)35ej;>2o7QA@2a==|6cor0`XW-xL|9`WVD1lh&VwW&K7Hxv(BzL{73$uB ztJ4SsLP?1PnRjzPg{JCr?@l6!wNsl;0#vjrnfW~(P#d=!lb=0(Ix0l5(x3a&4i-&6 zLI5ziv9TQ(qY2-CN1;#4+z)^Dj0$ETUi9jgi6%n4wYUMmV7>1jev;U|P@)l^#ShvI zMjyUcC!Eq1vNWT?UxTk%KZ-9Ff_!!T+e;TOCXlzx3KGY#dM;Q!H7D*##E&)gB7G{% z>?%`NXXg^Bjf=4nzIyIV&Y>tPDFH9W>_b6y1ctg#f{?um%Y?XM*c8bK<65BYNOB0) zT1W|^C8cb8_~dGpA%o!Ib`RzvAMnZNxKZ8{Wm8B@1O%`rCF?n$Fd`Q&%x>DWTtgvP zRZ*jn9f50f_+n-#Od@}f9pr4QGNVKMQ`%E-VUkBY4djx_v?8H+iJ3{7=A&f}0M4=>VZ&BHy^qX>4qjFZ6!4Z(s zaeg60B9Ef=hpa4Fn`Q(kFX_El9f2_R6`(JVo}M261qlft!97g5_8f+uOX8+NA^La; z3H6}El9JIF4mNf4dQ`Gx>ot_ky?+QkyFe=Pz#{SScCGJOc8jROr>mVu=jKShoamkK^WEKZh(D~_V$e*)6+fxEBV)lX?Z4Iem z&>{>+`Bn7#OJ|g(rY6+wVTs&KD+|j`j*wh)5GcXHDM~LJ0WYbktn4(Rie1rMH$iHF z0_H%#py0%fm@RH}9Fezag%W&wduSg)7ZGlxq9UxFT2(z=ZuhN800zZq$R=bdfQ{vd7l)c?ZF{;62^1Yqlwcf^R_}}mG zFUZ?2JfFb*a?p?wMnHvdC2^muyJKxR1(>io)Uz8Oc=Blh2+F4hQ)zSNqn2-M_b%96 zS0c8%;GAGd&&NCwefCi1hC_XR!l@usb4{ya1|Iwh7sJ8{Lr4w&>n9PodA#cx^i`$>OR7w+pDKQDx|y$1Z#`w zCX6X$JLl)q)g4e%8D!D+utO~e6_}Z1w8!`K=&sV(cRk7YifRNUGMZ~AIG})owoX$y zpU&W-^Lvvj?p>|dvm>@O?|p!r*JnmZFjt~u0465!rDu2Kn5T_{wUv{fwgBXK8r)OJ z^3-Tka~gqg?%H`wBr+y(%eCkSaKb4T!ZPTJ^ye7uyRNbytwEEGIoEL9I)xo->eR`T zWl;!3b7wZkvIU-}k5MoYEw9DcWY zWG*Ho>kC~Y(pbx!20$-%mOJwI*OG-G-_H0KlmlnC6v!qhxcM^}Q zj_>pwUUsXylfRmt9*dQ(&CWhYI+ID(C#<3<+}!hAw$A5sI=rh!t0*J?I_2o@KQ&b! z3&*t3EOcm=u+0Km17U9dH?=-n-rn3}vmV~foTzSBH@9Bp@H`ukOi1#yCU6_(Ha0#B zh)FzGSt(y$Df^xIS4B-Mc3g;mZ0zGxJ?8k8n9VA$JSkyBZe^uGhJGKOK}-JxECIwc zuk-7-?9ZPgv#xK}R?DBwRFb`0nVbJ@@H_Jy-H4#2beYuI%(zx3#@>SqJ3R=mE^*rg zSiYQMG`S`;Jd!JN0c9w1{MkpBh%fyuV!lO{iTO)u8zm22W=^hlG?Zv}zD=pS&pB(i zvQV(bM{O2f|3ybp?da9JV2@@cRzOI6^dyXd6U^E#saXm&DqpNAdSO3w)1XbyC)i)z z(#%6ow5A6!q_3dZPWaC-49B%ic1h+*O1M^3NFCuK-9pB&@d~vcJ@6l=@fERN2=w}* z@TueM@!Hodfp>c1=9EE)L%5=`*0TMC-^O+IdnG?c(4`OLSEww+_cf=m-Q6E*+~$s* z7_<^|7B76jL;W0#FgF+1z3yVOWi=k;tAI*xFE1}|?|TB2SbRA)b6`No$H$q^&77Z$ z6I^8fN;lo6BA@S^VnoUAaMA~rJ$-9}I;~GBSU~rfWI7OhEv2i5W@eoV3=U6wba&=I z)_wZnx!UKPzEP=tT}5tauIDf=r>`GgxZSba^Hwg1;KIDTaCccn$ik?2Vj9Y?)B=;n zk<}(YD=R+0L%ML+%zj;q4KEm)Z%sIV6H>ANXgF18`tpYwu{zKbu@rYH#9Oj*8YDymxnWI@qz^Ef`scV zu}zgwe0|4xdNrd?Ikl_R{6zs%x7%`-gxjxSS^4|iM-t{}383i|_FX%lb=YmY#btEx zmV}qPyFI(@x`*EtQT%1){Zj#lVzirz-erQBn=f{|oVVinbV*Lly0m6Ycsw6?R%~sN zdd3yMmm0&_NmObJeA~Dy62`1C^~pmY{!kGJ?)6K-i8oyurW3NWG_EVyLnN$CX!V3z zflFJaXM*@b{8~I7*n<#h)!5D)0NCM(m-F~G!^>-=pwM0-!BM2)D7VTXvx=DvX^s1M zq+Xxz<&$wAo~!k?wo1WZ&^S?x9Ca@`hub=iOpMn*sPN{mkWxgtPP5ndr{?hPJ0Fv% zWTspSB@$TxkF<(UJ~c2Nxot6EVlg1M{{3ouyZ^C=>$z#CJC)y+DZN_vIJwZ)AaQtZ z=+oG+g!`EZt#sPa&=57UVeaap$*8GG39z+CjSh*kFnLHT4BK(vc-O7U!!7$lH2Pr$ zGv&X6;$l}6O2{R!lLc(Y!u))Qd7Zqej?P~G^E)^TX^(%1h)P^}jFp3wLe$L54Sh~h zhJ>oPBJaeb{U7H*KvdZY>Ou;gA@dqx_d0KG!1{Q$+CL|lXMMTvdVb-8xmjJrm#HbQ zfo%%C%a@U}uX1hjBc6mXuvHrm`zTfsOD3mZM@&0^4o$uwET^bOhILa|AbkLy#&DeB zf75j$_gJTw*TJ6H>w|rd!(&uAJvCHBIu5 zd9m~7TaptZLPL89q8PBl87;?r6h&24Q)r@@?Rk!%^rtq(wd?K#C{GNwwMcsk*5)(P zbB+*By024%#Ocw=@9S=xd^mOe>*$BZ&!W8 zcuno_gx*xZS^U(YoMRKP4s`Y8#FS-?Vs=Bt6O70<8psQ0 zEPfE#lgxQ;>F7Z2g#o{B6U8gp-TemAXdYn#niow>xymD{Z~bIFWtJT4qLxi~$t0%< z$!kR-Gc&V&%C#yf^AaHl6oII69X`2Uc!i}Y<1%Sm7w@zn=lE1Bc z8u&dx--&WP8Ht%Sym8}3*4wwZg)7|rt@18dZto{lE0lB!_SSRE&TmRa!*?Dz!gx_ejA_41O*G)lDWeq$-_;#IfP9DUVFK}aZp z?kU~u!C&94?6=)?N}gesk*+T54zW+4Qm*#jG)Zk2eRQ*+7xn=t>QD|C85+v2Uf1$7 zUV5ROJZ=_{N!($LNlOcSoWV;b3gsL#U%h5*>3ksEWU|Autk}~r_%+n^g6r$V#IFrA zv=^G$U*U$rk}ofk^-r-*7*P#EU>iBcsIOU_@@6G`XP zI;o!HoUVzC92l&iGUZ{NiS}4 z;X>>Is%eD%1v>c7L@?W9x8b0YwW!o2*?5n2MZSWNB@bszj)Mg zb)T7->{fHJj*sa7a6ll*2Zd@NRTs^LpN2G)0x+}r3rb3eL25&{Qc^tmom`fGFyrw| z$>#Ofqdk$X&#>p6>sQrncX%E9Hw}ujt6c;bXcX^WhUTfk8ZM|1*WnuUZ1dp$S1-o6nntEk$H} zNSa8?jpFMyM6y>e!AajO;dMaK3h5*r=jILoUhsTZd}WV1B&qb@RH>ZDsr#2y)bF)N z&2H}B$|7bKUo9MqQ4oOG;dPTUx{nOJ1$H-N{>2#)$$y#CZi6_AU_3(Zds z+~LjNdvk-3BQYMz?H>+1`>P;_SEyZn!$$=vp~#+xb`Q?uLN#n=2G>=qLoRg%+^868=rXi`HE zA|dVwWi)mU?%Fh!e~aP3%+L}NE*Q(oDazLBCQSRF23a{)XKBvAE zMq9tl^f|>6;q*Y(XcsD`WmY0VoQ11}scTF1( z@rIelhEvwshvG;Ntuh0x*Ii%O%JH%G24DC=RX!A}W&6Z*& zmC0A`gXkmQhbxii%cDqFTDeeaO$hs#W$4Yx6aszsHGz5wX<Y7mY6zxqpmGe#(`u{N%VRqAEZU zOxZQ>c`LS(e`YI^{^G@p)HF0VvIjse8h~k9yYHx>v0&=xS5Y;4Z#X#3=>Gi=oX38g z=Hh2yc$23nhEQP*l+DUG@iZ( zzb%QD~toBSQdBRI_-vWV5PD<)YkbZ{YD9-w?Wv$N% zh}QzwUpW9CsCo3@3s(5eThX3etELUcr_bJNXb8?dJr^2Ex%ZL@5uA-nFYrZM>@QXl zGE&P!=AP1*#(wkKz>Lw>YXg%6+Ju4K0^)cGjB=BXeq{$#dtKeUWRXc){IsL1?Aq|U z-StbMp<3$C1aopS8`7w+bjdFmbGTi;o#vj^gkjR*;Y(ZE@ATqP)%o=+aBs5#i2ejd zR0ZoG10El0QG)%WwfwHrYA5(mlK%HEzGM7g8fvPf?ww>o4CXA}eDH^e4VAq?$Y_js za7e>8C8;Z5iEogo0pbtj)xlZVaOFI@z9@gU|?;nCLqu@JPed0R|rUr&2}-XF{60#$d6oqL}Z^A?jww?k@@b@pkifBij4iwCC#y%J4w)Z0o7Yj zC7=wSbVqzr5kXc?;IdQ15@ z)TtY1RH0OI_I${tL3ye2H0hu(O~gta3@}r#z2so)SDbz%>zZV*L+ijIS9`&-Gyg^$ z*?c%VU3w=>=WpVvH|oW0g9!^Zz7Xq~wZa$t&!hD@!^ej-h_epejsK0jb3K@pJn=V8 z?d#qN`})Wd3)~v;>7W$_if?@*9Z_do(s6gsD3(SA2ySjHdCz~PDB(EU@}|$`Veb>4 z4K0@tb+%*2?id*<0EtMlar^1L6^e=f!v&}dNp|bK+?a%IjK2=G= zHtfwvvAHG^JmX1aue=MDl#hSQ-;a%RQR)|I=%1$LsEN|M=Bvt?QG+-<*lJRAn}Wh_ zFtm+mYO2hJpOV{B6}^D^aeXxVfq3WJeV$u5&3i1TTzsadapmRE#9anN@}0H$!`+c4 zLpBb?r=0Ki9KXh4+uyAdGM#_>iGe64_J6B%gf;1$ep2YelZ|szr8lS^YL8CB7tVL zuX&)y@w;K~gYW1lGS;iE^v*Z_xBHDk-kxOaDA1dG4mi;Yv|6cy>2yqTHesA(_$*~$W6z{SbAFgM4} z$5)ygmir3PJe{X4DKU9$#OrMACAqStg@1nspY+}``W_wr@}+s5*LgPAsgI|kH|{gz z_tln`l(CxktUF7fyG^>Eg~5|Na3sb^BNX~1fk<$yADSBY0u2o|t>A$Z#_>jmb>~XX z%SXb%H9l4+GYSrZfX>arcX|2ePhU7d!qN8ANy*`P<>j*Hv-!{C_}A}6u6@YJ022(3 z=)Ohx%cS-01Zhw-0Z85e1Ig*2A92P3lYcGSdfzQrO%*dUaD!z{RnoHVlWW~EcJ@k_ zF_{w|p3`Lw;U@>iQ^+W)L`$dCD0OgXh=Dxa7=S8&PpOJ-0og~?sOU^4#2H`T-c_2X zL5!yZK>cd$fp=UaWMo7>`}WO%P9o7ac-j>>Oh7ZPuBf=Fr>Cf(U}Sm|Yn|z|is8O< ztk`clw#*`?yYt3QA0yfG5IA=;BtTDS42&m^~x^@c;)%W}54!Y-gK0L=mFRltyd zt}59HDa0B5>V?v{AWWvxe%yhT9A;)VV(YIC)cta9CGx-hTDJFs$f}19USG-Hr(2Ks zImaT*{Ad4dazTLqZqL*s!Oh~sY)!h0q0hD2X)Yxvo+=PunI4C32Y5;W+x{-8v@MJU z=mm)91)GGSfzsI|SsAQ`#>7F-%N&2Px(V?(=yN)Nb|7f55;=G7bIaAwKHr-6*}kej zYwIZStkyx=3mvXo7nJI?M3!Zrj|HA?=X%z4<>$}A&zv)gyY7Vd_u-JR!1}G*C*G=Y zo4yPMBtmVFUBhnVMuEETc3Rsn-y=PdcchsBD29umohlQnTK;s9#veeA5+*7yJHv>6a_j<@c zwfEm#r1awA(AV>^uCA(`Z#6hvv;{&aD^*0I2MCNdH z+HOH-hn<}rd2^&8h3^ZUfGY)%L+IH0^>bF2OR26-EJb;y-==2lan^Z!Aath2Tlp`R z9{dI0NbYd93=(}16Bbg3Wh%RK`${_)_-TKVI6pA7zX6>es8xu5e;~0n?JkMJV@iO| zK2=0|V4dcG$A3Sd-!DEZmyMg7oo(D(t)I~K_VyA0&|&SmRD#;M%n5v-BywuLy(1n7 z0Iv@?nWdKXo6uJp1U)W)kfYEct_Cz}}2W~ZM#@#}rm8k}E{usbX!+pPl zdFS2t4ZX)kJY0=EaT<0D6mPN(=#Uvrr}_v)0K%of-v^7R_V2ewz}_X*J?#LMogZ(3 zTn2q<%AP;Makw*EaTJKibFnvpW)|)M96B&$2j5C@K{E9&6XN^g9%xhLp^cdGC2a<- z2?CjKyOZ^*wQiu z>i%hIYG~pu;7JZgAg%~T@d4SjgO9x*`ifHCzhC|LnV7nNZe8OQU7gQ6xy`|mjT*V( zv>Sz&-(1USk83*7kaxwz(IJ2 zU}aeqcmSQ(zzO!*DZQw}bJ_kEcOze;3vpfp2~h%#v~_OxKcAfpMip8bruX8#czodZ z5Kd^e0FpYRu`yxqP#C+f4=sqmDpUrtJlQb(hBh8{9v)W*2j9(Q(}*8IwD?#L&aT?e z)s_wA0@V?PVO#AICxRa=4rD`*2qbr{gZJg( z5jAI^VOj^;S%ot}u>Kr4C5OKk(0nzvmD9V+siWEukvC`N(Q+7wK@HQ*hZ)>WJQ1#y zRf68y+*}>6CPB+iAjH!T@k!Z*g{Dn+9hhNYX!wIx4-jf>eLb0J1?@kqWzgPxMnZy| zmj=#z?IeSDso2NUmb{Gep6C@3)UspVFGr_5wUi5c@|qp3g98($cb{B+X5R&BVg&{T zE-JRHA8u72)mt!p28|gQXgcBL03e#?0cKpv z&%F#HPTp=`sC6#%rlrNlbDlbdv+H2K9E6_7E-jbRw_@+Qo zJ#^IowG@(|kavV9_e5KlfpkDy(FWZ&_fC8_*n>iVKV;WIxxQNe3zWGQveiK2-?@+LV%IKFg#^(Z0o;w?Y0+p^dx@ZTxjDG>*^1g zH*L}BTwW_~_=@oO5$3~^cA2jeCWYT8ZJvX78f zwE59a$V}N8su|>O;G^6)BcqfhTjF8hsl_9p>${mBtR0FJ2!zo;g{lBqOKJjK?+ zto+cTH!j}2n{g{Ye?~=hw+%h3`ROC&TeZ2n*1eP)3shDe?Ji}p5OwX^wF@Q)C6V$3 zeJB@F)6yW~5TSkW99oxi%1HUpiIM8e$FGYOzEZdAwReUKdNg_^_qS@Y#-~jZ@pCSw z&n^Ef;g3}OtNu%SC^xclMKYx{`^lZA{Kc< zl$TVmJ22jQ<{o|f;dN_UdqkoI>({k3@*mBEuO{99Z2G2V;nN-G-dJ`yI4tN)Pd>(t z`5Z4?;OI&rm4l8+O-;?r%&Zl9I0FO4HMX|4qBK~w2Xb?JKC7Jy{g!yYT6O$c2gTvy zxIM#8zxi?Vvt;}9$3L{Zs%y_YHr<_ABFAcPJ?+v%fBxgd0k?-Y;LBySe4e4S`RrL2 z@G_L4cmlzUqp*Xa;3Zep)?UAT>XG`veW7bd$J4B*?k+kx+Rc8ZE!^JGc(nAJyIXm} zpj#lDWPeytueqh{RWS2BqoqrMrl(h1SGPr3IVUacpi&IN^?0T%!B`0bBUC#%yRaExu-MauBi{mrVbBj`Uw>p{MOWN7#TBEw&eng?)erbPT z?m%V@(vOxF>c)+bKl(Ng{gIHFW*bTHebw43DlJVva|XWm1?ETrH0lic^&or9{ASN$ z)0A0w=_ZGZ(f@vrYd9Lbc1kD6duiI=c4~6+tm)+tT?~P%ce)UK(?H}%)M6!)o?QLm z^!6|-8KGLx3e2YdYO7GLtifQ@#6E|OCyS@-YY1iXV`39 zTM=C9Sbq2CKG@8!&wnKP`R&L2I+zPR1$cZ2AiBD{q3VbE(cF-;Lh6y*!>pN^ODxtB z{1+~$r>olnOR6&tK|1~hE)JZ4+VJ&5lOB1Z-^|{)i#vo32=q%a;@8^6uN{tEYd0-; zsd47Ak)X;o`){L$bpun-m@(mw@M=ubTN)HWfJ33AV^&i|#bg6Xph;DE!a2drx}&}Q z#lRGX<}oB7biMN4dIN%o3la^~1;J24SXNh8XHX(AWUaP^PYgoZ34?t z&2e*afpV_Udya`1cy_WMl|t-gU-A=ZTd)i?eLK7KhYz=o?=kSJA2<@Hl97_~3DObR zK_vwR$ezufU%6~)xuJXE{T#n-{Rui0^8UR1nVFfhUOsgCom-B_1qcBOn7dyaefIKj zKgQP)ZVLzq;C3*M3Yb81(Nzu0YjMG?@7{%nh9WZtPD?aM7o(MVqFiMk!4~)cumHIV zjt)Y&v~_x)k%ON@5)9=f-t2FI5+fdCv3~dO_d}*ZB%>K5d-DcUnjoQzs`4lrk!Uxe zp0aA)zLeBArS|j@Fj_toyN8pY**$4uA{SX_CqJS}A2Q`fsRO&J)OEnX#U;nj&kvq< zT$ezlz)x2~b`34&I!&*3;0~D5sT;w+k=`pJDftWeZG3$EUBtGpUb#T0mgn|u6}AyS zQc;{maHjwZtE#ElVU|zuRanW-KR4I2bcEOeM8vOeqxQ8&4>lZdGBm7*dT$ArLQ5Ju zH4F2FxdS6KL&L3rJV4D-P;gRC^dCIx3%{>RAHLiYd3A-PP zh!$Zb8Y^g~L&a%LBVMmOooDw7(iNPH`EK`~oM8c#IJ4)diO-K(EMaQ=7eZPLN88nM z`EnVfYAPY&flw7(5ESICOgsA_CIXDo0~%YTn`re{YrTRp4bk}5PoDq>WA;|?7Lk|K z8;p;ufnkNYR7kqsJ^J%uMusOSDt6e0L%@jT`7Hdx8iq>lQb1{-tu2ZvYkdhNG;C0u z7{{KHg`4A_1Ox>^DZCXK`L(-v2!$c5D&m>{E`40~CI*{>Nqrc|hUtMV`nVU>z#Upz z7J7Q}d-txbKiCF-8slYS<2dR?99mIzHBKFpiu-W$zZ&c7x2me1)Y0iL^W#Pol)P@m zH6otw7D2(kfck(4UzCOtEjS-LJA(*GEH7_wPS=;b9^jXI2SV&>{gML)O)b!*t;P476;6ULiNbp2n4aqI9kX1_i7m*i@3@meGMm4bpAmxf8$ zgA=Jf;-XtBr?o2&Nc{^0^KnE{X6n7b_8%& z8OI-Ru39Q8EL?8185|yjEN81Jc39N)`4uc9J+=yF#M3qz_P-Krv~H>OgJJlK4N5ae$k(2`EndF&gK16j%AdVY8`*? z&H7A`0bOJMG>)AaWW#1=Qshq;S#$3>vO+BN2y8#UfB>w=CU!%j#vDX>Nb~Nm6);`$WuyM+8O9}XqpQ%$Ge)PER$eZe$LKP^PdCg)ZTuoZTCD^Xkju7yecTggF`}A zl2J(xJEfSGK=kcavMAxm^laX-K`!7Rq8b=Rz7O`h>6D_&gnN>P4u;e>Fpv)!5*|}K zhiV6Rh#gN?az{vqjx83L-wxQP0OoSbwMsE_u%HD61>$022z}_q%nKk}#Tsz8SO6n| zWDJpny3BS>O`mdqUc6EbkId6~&mAl(Cja(-5P}7C~$I`wn>u~iTgSQJ~jZ{=pQWBos19=wy&6tT|=9(Z~{41M;AoS_er|9Oq z65@6AAG{`hf=(an?{95y*Czr7w>qRcb`Af83P-PnfF?bC16$Gj*&anjqmw6Nm=w#k zS$qNFyDpEkg@y_s(xxHw(Sv@61(9fHG9l_H)J%8pT0kLxy>g|Hkfz7P28L83cTE?S z3Si#9PTi6Kybyb*e_G{ubUd-n)8V3oeE-h8sUHOb0}*kZ8mMZ>zU;3r`xo{^LISK8 z6ctgXZ~i^mrQy=YbG=fS$dl*B)pGLGDG975ab?1`Db!^ z`eA0KEE{Auy5gGn*w_{!UhTuKu21yk7#A*VVgt4%hx+D!uw!JPxuaA+fR3-%J zNs=WI!MdCE(i}HV+Sk%WeadifKB`>JCz2tS zf~pQX1AoYK^E24*R+$u8KL8ab(0{)TCbsd)K-$>bWts9wlVoqw0pKE`aOZ}60qnZh zLc9t92I{0_WjW$92w~U}@F4tw72xw=i%_YEi{wNOLET4YSN3L^6?{R^gWZ^xz;7ZN zCv`2%XmiMo8|`4t7;WCj2Jvz~MGUI;S53SVG^mI1(xXR($yIG_D(dReAzLhslMBzL zM@L0Dc0J9>$_nL}Jh5csS)jr2(H zHU=Hy81`pkc1el3>`iG+uUJw=ud^v~NW_^k;d*M~>HI3HEeO0SDl36VErx!A4CIF} zUm%igY&P{13`Qmx(r+0^HR00TF)@>;<97wJLT_N^I?!1#HC;olLXJxjyW-)2y*80P zGQtSby%iCmO@yku6KOHpX8)83Uz3TGiaKCm5PV9}iNTO%bBIwmwip7$d6?e}Td=ga zfB>5vfuaejO%6y5@w4Ipt`o6mFhqiMdwk}$k#!N-_Vn~LH#Y-1$5b+QK!fl`SXha3 z?=mvGw*NwR(Hmr{mAx%Zyd&UB8pwl%gSt^e)SsGnn`c!2_O5KHud72gw-;kIWL?A) z*##edA&^3hZiEGatbuYLDFSjxPOS@NqTl{=?&r^5p&;scv`k@rBBP?Jo{158(DJP^ zO-qsk5bW8Pp3+iKZy-Un8T@Iu{W-WN1yRz)EBr9v{d<0FK z4FAS^oUpKSGG>B13UHh~X0fJSLDNAAv3**4IUQ1n){X|1LmC>-laLDf5*lPySO*L) zXAWPTj3-UiNL`$rn?oI-^)PSdex;b53Eo3Z>--HnlV)1F$|S?-^PAb&x=mOvXpNkx zmie&7khb;pSq*MdvJaTjapSJXJhvB0#u(!{f5d*uLmdehI-Q|18gWb&%iHMS;RR!3 zj)SR@k*$M`@i{;CP@ru6=k>;g3#eJc^#N`&Jgl!KNl`1LCt@b(&KQWSL;4A^kEmYa=|a{d0oTfTxu5VFYe_dU>c z!KWaof+f6^>vszsrOi8=9%W}+hY@-F8{<_G1%x+kb@J&lc&q$)GVr(&5zZJTz_Jb|A-#vcL2}2t zjH}zD#RBdWpjaEe;+&kDd+ls&zN6<=0&>mMSV0AWMnMK(u$%C}$mHad6kQk2Wf~}6 zaOq;Xd_ToUR9Mw0IKm0rpdUv8`UIU< zo{dt7^6Ieh_9z2)_W~<+_S2F5#2i4wrl!t-^6~{U^e}28U&;ekK(%e8ufGQntR9Q& z0G3f#e}T+LIWaD>?tHK?6I`6WJ>j)xIaYx&G4Ifoq113E0Zug$kG?4~gv$TFs}$5DCckojE$Yqg9B0q9!Mb!-Vt3;XOJ17lEqTYEL%q5 zRZ%TF4!|mk9tfw@w{Cq{Tx{mjg~652T0G0Rias5HuEMQw>yx! zfPtWn9!7&2x3RVxx4IdUWn2}kK(Mtg!rcAXCKFz3GK-cG&oV#MG_oTUkDWe!8{|n~ zG!TGMoZeS|bS>o23f-=p1NaYNQXXv?1$rUvrLJQ4?Vt}sv4pdjot^#FjII>3H|9%U z9~?7kF-Nwhh*)**+rIrVlB}$(v77D}937$8<$z%w-YU||md~EEbMhVHuuhPEA@mK;`Sw?`V z!RHMq0TG~}pg^Gv7k`XZwto%aX|aoU`iEcrfPHXWd`!&Fa5!!62Z5qAAZl=ku)WdH zLBwHWYkNJim(YxSggSxe&zUU%B@ka2h7Jo0tJS&>cAd5Lt}j0hA{C#ppEFd5{(ix( zx?glD7Qz9F&Gg}feJAwvY=^nI(yzn(Tw+0RY15F3`rqt$p=mYZezW=XJ2`VL$8b~@Fp+~*u66xl`^G8)~ESE5ScvmO->7*2d|n8v#iX#25@z>SkscICIgy!ba={kkVanAslpGBWn! z?h%m>xUTo~H(kzog7_GM_>VhQbAJ2%NgeIKKdGZ^Gjx&!!fu2OP$>TXqz>Q1fSMBs th{f?q9hRd1z4HHGLLmHKR_xOfS6$Z|sfw)y`B+oJp#w*BAJHuR{|C_R0KfnM diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json deleted file mode 100644 index 4b345e4812..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/box.schema.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "box.schema.json", - "title": "Box", - "type": "object", - "description": "An implicit box centered at the local space origin.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "size": { - "type": "array", - "description": "The size of the box in meters.", - "items": { - "type": "number", - "minimum": 0 - }, - "minItems": 3, - "maxItems": 3 - } - }, - "required": [ - "size" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json deleted file mode 100644 index 0d7b089e34..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.schema.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cylinder.schema.json", - "title": "Cylinder", - "type": "object", - "description": "An implicit cylinder centered at the local space origin.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "radius": { - "type": "number", - "description": "The radius of the cylinder in meters.", - "minimum": 0 - }, - "height": { - "type": "number", - "description": "The height of the cylinder in meters.", - "minimum": 0 - }, - "slice": { - "$ref": "cylinder.slice.schema.json", - "description": "The optionally-defined slice of the cylinder." - } - }, - "required": [ - "radius", - "height" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.slice.schema.json deleted file mode 100644 index 9b6b74a099..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/cylinder.slice.schema.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "cylinder.slice.schema.json", - "title": "Cylinder Slice", - "type": "object", - "description": "A slice of an implicit cylinder. Defines the subsection of the cylinder that the implicit volume actually occupies.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "minRadius": { - "type": "number", - "description": "The start of the slice along the radius of the cylinder.", - "minimum": 0, - "maximum": 1, - "default": 0 - }, - "maxRadius": { - "type": "number", - "description": "The end of the slice along the radius of the cylinder.", - "minimum": 0, - "maximum": 1, - "default": 1 - }, - "minHeight": { - "type": "number", - "description": "The start of the slice along the height of the cylinder.", - "minimum": 0, - "maximum": 1, - "default": 0 - }, - "maxHeight": { - "type": "number", - "description": "The end of the slice along the height of the cylinder.", - "minimum": 0, - "maximum": 1, - "default": 1 - }, - "minAngle": { - "type": "number", - "description": "The start of the slice along the angle of the cylinder. Values must be in the range [-pi, pi].", - "minimum": -3.14159265359, - "maximum": 3.14159265359, - "default": -3.14159265359 - }, - "maxAngle": { - "type": "number", - "description": "The end of the slice along the angle of the cylinder. Values must be in the range [-pi, pi].", - "minimum": -3.14159265359, - "maximum": 3.14159265359, - "default": 3.14159265359 - } - } -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json deleted file mode 100644 index c88a72137d..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.schema.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "ellipsoid.schema.json", - "title": "Ellipsoid", - "type": "object", - "description": "An implicit ellipsoid centered at the local space origin.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "radii": { - "type": "array", - "description": "The radii of the ellipsoid along the X, Y, and Z axes in meters.", - "items": { - "type": "number", - "minimum": 0 - }, - "minItems": 3, - "maxItems": 3 - }, - "slice": { - "$ref": "ellipsoid.slice.schema.json", - "description": "The optionally-defined slice of the ellipsoid." - } - }, - "required": [ - "radii" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json deleted file mode 100644 index ae7a91d965..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/ellipsoid.slice.schema.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "ellipsoid.slice.schema.json", - "title": "Ellipsoid Slice", - "type": "object", - "description": "A slice of an implicit ellipsoid. Defines the subsection of the ellipsoid that the implicit volume actually occupies.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "minRadius": { - "type": "number", - "description": "The start of the slice along the radius of the ellipsoid.", - "minimum": 0, - "maximum": 1, - "default": 0 - }, - "maxRadius": { - "type": "number", - "description": "The end of the slice along the radius of the ellipsoid.", - "minimum": 0, - "maximum": 1, - "default": 1 - }, - "minAngle": { - "type": "array", - "description": "The start of the slice across the angles of the sphere, given in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359 - }, - "minItems": 2, - "maxItems": 2, - "default": [-3.14159265359, -1.57079632679] - }, - "maxAngle": { - "type": "array", - "description": "The end of the slice across the angles of the sphere, given in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359 - }, - "minItems": 2, - "maxItems": 2, - "default": [3.14159265359, 1.57079632679] - } - } -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json deleted file mode 100644 index be150f3449..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/geometry.schema.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "geometry.schema.json", - "title": "Geometry in EXT_implicit_geometry", - "type": "object", - "description": "A definition of implicit 3D geometry.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "box": { - "$ref": "box.schema.json" - }, - "cylinder": { - "$ref": "cylinder.schema.json" - }, - "sphere": { - "$ref": "sphere.schema.json" - }, - "ellipsoid": { - "$ref": "ellipsoid.schema.json" - }, - "region": { - "$ref": "region.schema.json" - } - }, - "oneOf": [ - { - "required": "box" - }, - { - "required": "cylinder" - }, - { - "required": "sphere" - }, - { - "required": "ellipsoid" - }, - { - "required": "region" - } - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json deleted file mode 100644 index 86fb48087d..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/glTF.EXT_implicit_geometry.schema.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "glTF.EXT_implicit_geometry.schema.json", - "title": "EXT_implicit_geometry glTF extension", - "type": "object", - "description": "`EXT_implicit_geometry` extension to represent implicit 3D geometry in a glTF model", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "geometries": { - "type": "array", - "description": "An array of implicit geometry definitions.", - "minItems": 1, - "items": { - "$ref": "geometry.schema.json" - } - } - } -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json deleted file mode 100644 index abb0dec8f7..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.schema.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "region.schema.json", - "title": "Region", - "type": "object", - "description": "An implicit region defined relative to an ellipsoid that is centered at the local space origin.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "semiMajorAxisRadius": { - "type": "number", - "description": "The radius along the semi-major axis of the reference ellipsoid in meters.", - "minimum": 0 - }, - "semiMinorAxisRadius": { - "type": "number", - "description": "The radius along the semi-minor axis of the reference ellipsoid in meters.", - "minimum": 0 - }, - "heightFromSurface": { - "type": "number", - "description": "The height of this region from the surface of the reference ellipsoid in meters." - }, - "slice": { - "$ref": "region.slice.schema.json", - "description": "The optionally-defined slice of the region." - } - }, - "required": [ - "semiMajorAxisRadius", - "semiMinorAxisRadius", - "heightFromSurface" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json deleted file mode 100644 index 3ee3a46054..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/region.slice.schema.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "region.slice.schema.json", - "title": "Region Slice", - "type": "object", - "description": "A slice of an implicit region relative to an ellipsoid. Defines the subsection of the region that the implicit volume actually occupies.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "minHeight": { - "type": "number", - "description": "The start of the slice along the region's height.", - "minimum": 0, - "maximum": 1, - "default": 0 - }, - "maxHeight": { - "type": "number", - "description": "The end of the slice along the region's height.", - "minimum": 0, - "maximum": 1, - "default": 1 - }, - "minAngle": { - "type": "array", - "description": "The start of the slice along the angles of the reference ellipsoid, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359 - }, - "minItems": 2, - "maxItems": 2, - "default": [ - -3.14159265359, - -1.57079632679 - ] - }, - "maxAngle": { - "type": "array", - "description": "The end of the slice along the angles of the reference ellipsoid, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359 - }, - "minItems": 2, - "maxItems": 2, - "default": [ - 3.14159265359, - 1.57079632679 - ] - } - } -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json deleted file mode 100644 index 23bea914c8..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.schema.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "sphere.schema.json", - "title": "Sphere", - "type": "object", - "description": "An implicit sphere centered at the local space origin.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "radius": { - "type": "number", - "description": "The radius of the sphere in local space.", - "minimum": 0 - }, - "slice": { - "$ref": "sphere.slice.schema.json", - "description": "The optionally-defined slice of the sphere." - } - }, - "required": [ - "radius" - ] -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json b/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json deleted file mode 100644 index 7e822dc556..0000000000 --- a/extensions/2.0/Vendor/EXT_implicit_geometry/schema/sphere.slice.schema.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "sphere.slice.schema.json", - "title": "Sphere Slice", - "type": "object", - "description": "A slice of an implicit sphere. Defines the subsection of the sphere that the implicit volume actually occupies.", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "properties": { - "minRadius": { - "type": "number", - "description": "The start of the slice along the radius of the sphere.", - "minimum": 0, - "maximum": 1, - "default": 0 - }, - "maxRadius": { - "type": "number", - "description": "The end of the slice along the radius of the sphere.", - "minimum": 0, - "maximum": 1, - "default": 1 - }, - "minAngle": { - "type": "array", - "description": "The start of the slice across the angles of the sphere, given in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359 - }, - "minItems": 2, - "maxItems": 2, - "default": [-3.14159265359, -1.57079632679] - }, - "maxAngle": { - "type": "array", - "description": "The end of the slice across the angles of the sphere, in radians. The first element corresponds to the azimuthal angle (a.k.a longitude) and must be in the range [-pi, pi]. The second element corresponds to the polar angle (a.k.a. latitude) and must be in the range [-pi/2, pi/2].", - "items": { - "type": "number", - "minimum": -3.14159265359, - "maximum": 3.14159265359 - }, - "minItems": 2, - "maxItems": 2, - "default": [3.14159265359, 1.57079632679] - } - } -} \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md index e53b7287da..d0187a2899 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/README.md +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/README.md @@ -19,9 +19,9 @@ Written against the glTF 2.0 specification. ## Overview -This extension allows mesh primitives to represent volumetric (voxel) data via custom attributes. Primitives that use this extension must set their `mode` to the constant `0x80000000` (`2147483648`), which is used to indicate voxels. +This extension allows mesh primitives to represent volumetric (voxel) data via custom attributes. Primitives that use this extension must set their `mode` to the constant `0x7FFFFFFF` (`2147483647`), which is used to indicate voxels. -Typically, glTF mesh primitives use the `POSITION` attribute to store positional mesh data. However, `POSITION` is neither required nor used by this extension. Instead, `EXT_primitive_voxels` relies on the [`EXT_implicit_geometry` extension](../EXT_implicit_geometry/) to describe the shape of the voxel grid. +Typically, glTF mesh primitives use the `POSITION` attribute to store positional mesh data. However, `POSITION` is neither required nor used by this extension. Instead, `EXT_primitive_voxels` relies on the [`KHR_implicit_shapes` extension](TODO) to describe the shape of the voxel grid. ``` "primitives": [ @@ -44,7 +44,7 @@ Typically, glTF mesh primitives use the `POSITION` attribute to store positional ] ``` -Although voxels are commonly associated with cubic geometry on a box-based grid, this extension allows voxels to be based on other types of grid geometry from `EXT_implicit_geometry`. This includes cylinders and regions, visualized below. +Although voxels are commonly associated with cubic geometry on a box-based grid, this extension allows voxels to be based on other types of grid geometry from `KHR_implicit_shapes`. This includes cylinders, as well as ellipsoid-based regions specified by [`EXT_implicit_ellipsoid_region`](../EXT_implicit_ellipsoid_region/), visualized below. |Box|Cylinder|Region| | ------------- | ------------- | ------------- | @@ -66,7 +66,7 @@ These properties may be used to define the scale of the box grid, independent of ![Non-uniform box grid](figures/non-uniform-box.png)

A box grid that is non-uniformly scaled due to its min and max properties. It is also non-uniformly subdivided.

-### Cylindrical Grid +### Cylinder Grid A **cylinder** grid is subdivided along the radius, height, and angle ranges of the cylinder, visualized below. @@ -76,12 +76,13 @@ The cylinder is aligned with the `y`-axis in the primitive's local space. As suc [TODO](image) -### Ellipsoidal Grid +### Ellipsoid-based Region Grid -For **ellipsoid** geometry, the `bounds` refer to the section of the ellipsoid that the voxel data occupies. `(-pi, -pi/2, 0)` and `(pi, pi/2, 1)` +For **EXT_implicit_ellipsoid_region** geometry, TODO. - Elements are laid out in memory on a first-axis-contiguous basis. For instance, with box-shaped voxels, the `x` data is contiguous (up to stride). +The `bounds` refer to the section of the ellipsoid that the voxel data occupies. `(-pi, -pi/2, 0)` and `(pi, pi/2, 1)` + Elements are laid out in memory on a first-axis-contiguous basis. For instance, with box-shaped voxels, the `x` data is contiguous (up to stride). contains minimum and maximum values along the axes and/or parameters that control the grid's shape. These ranges are interpreted relative to the geometry of the grid, as indicated by the primitive's `mode`. @@ -131,7 +132,7 @@ The padding data must be supplied with the rest of the voxel data - this means i ``` ### Metadata -This extension may be paired with the `EXT_structural_metadata` extension. +This extension may be paired with the `EXT_structural_metadata` extension to convey more semantic information about the voxel attributes. ``` { diff --git a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json index 298b7b4db8..9dabcb9658 100644 --- a/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json +++ b/extensions/2.0/Vendor/EXT_primitive_voxels/schema/mesh.primitive.EXT_primitive_voxels.schema.json @@ -16,11 +16,11 @@ "$ref": "glTFid.schema.json" } ], - "description": "The index of the shape in `EXT_implicit_geometry` that the voxel grid adheres to." + "description": "The index of the shape in `KHR_implicit_shapes` that the voxel grid adheres to." }, "dimensions": { "type": "array", - "description": "Dimensions of the voxel grid. The values are interpreted with respect to the shape indicated by `EXT_implicit_geometry`.", + "description": "Dimensions of the voxel grid. The values are interpreted with respect to the shape indicated by `KHR_implicit_shapes`.", "items": { "type": "integer", "minimum": 1 From 2b387c06af3d7361b79051842365197d554ae196 Mon Sep 17 00:00:00 2001 From: Janine Liu Date: Fri, 25 Oct 2024 18:04:50 -0400 Subject: [PATCH 17/17] Add cylinder region extension --- .../EXT_implicit_cylinder_region/README.md | 96 +++++++++++++++++++ ...e.EXT_implicit_cylinder_region.schema.json | 48 ++++++++++ 2 files changed, 144 insertions(+) create mode 100644 extensions/2.0/Vendor/EXT_implicit_cylinder_region/README.md create mode 100644 extensions/2.0/Vendor/EXT_implicit_cylinder_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_cylinder_region.schema.json diff --git a/extensions/2.0/Vendor/EXT_implicit_cylinder_region/README.md b/extensions/2.0/Vendor/EXT_implicit_cylinder_region/README.md new file mode 100644 index 0000000000..deca7d3aba --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_cylinder_region/README.md @@ -0,0 +1,96 @@ +# EXT_implicit_cylinder_region + +## Contributors +- Sean Lilley, Cesium +- Janine Liu, Cesium + +## Status +Draft + +## Dependencies +Written against the glTF 2.0 specification. + +## Overview + +This extension adds an cylinder-based region as an additional shape type to the [`KHR_implicit_shapes`](TODO) extension. Cylinder-based regions are useful for visualizing real-world data that is captured by cylindrical sensors. + +`EXT_implicit_cylinder_region` is an extension on the `shape` object in `KHR_implicit_shapes`, where `type` should be set to `"cylinder region"`. + +The extension's properties specify a region following the surface of a cylinder between two different radius values. The cylinder does not need to be completely represented by the volume; the region may be hollow inside, like a tube. However, an inner radius of `0` results in a completely solid cylinder volume. + +### Details + +The cylinder is centered at the origin, where the radius is measured along the `x` and `z` axes. The `height` of the cylinder is aligned with the `y` axis. + + + + + + + + + +
+ Example +
+    "extensions": [
+      {
+        "KHR_implicit_shapes": {
+          "shapes": [
+            {
+              "type": "cylinder region",
+              "extensions": {
+                "EXT_implicit_cylinder_region": {
+                  "minRadius": 0.5,
+                  "maxRadius": 1,
+                  "height": 2
+                }
+              }
+            }
+          ]
+        }
+      }
+    ]
+    
+ **TODO** visual example +
+ +A cylinder region may also be confined to a specific angular range. The `minAngle` and `maxAngle` properties represent the angles at which the region starts and stops on the cylinder. The cylinder's angular bounds are defined in radians within the range `[-pi, pi]`. + + + + + + + + + +
+ Example +
+    "extensions": [
+      {
+        "KHR_implicit_shapes": {
+          "shapes": [
+            {
+              "type": "cylinder region",
+              "extensions": {
+                "EXT_implicit_cylinder_region": {
+                  "minRadius": 0.5,
+                  "maxRadius": 1,
+                  "height": 2,
+                  "minAngle": 0
+                  "maxAngle": 1.5
+                }
+              }
+            }
+          ]
+        }
+      }
+    ]
+    
+ **TODO** visual example +
+ +## Optional vs. Required +This extension is required, meaning it should be placed in both the `extensionsUsed` list and `extensionsRequired` list. \ No newline at end of file diff --git a/extensions/2.0/Vendor/EXT_implicit_cylinder_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_cylinder_region.schema.json b/extensions/2.0/Vendor/EXT_implicit_cylinder_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_cylinder_region.schema.json new file mode 100644 index 0000000000..74a4fdd290 --- /dev/null +++ b/extensions/2.0/Vendor/EXT_implicit_cylinder_region/schema/glTF.KHR_implicit_shapes.shape.EXT_implicit_cylinder_region.schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_implicit_shapes.shape.EXT_implicit_cylinder_region.schema.json", + "title": "EXT_implicit_cylinder_region extension on KHR_implicit_shapes.shape", + "type": "object", + "description": "`EXT_implicit_cylinder_region` extension on `KHR_implicit_shapes.shape` to represent an implicit cylinder region in a glTF model.", + "allOf": [ + { + "$ref": "glTFProperty.schema.json" + } + ], + "properties": { + "minRadius": { + "type": "number", + "description": "The inner radius of the cylinder region along the X and Z axes, in meters.", + "minimum": 0 + }, + "maxRadius": { + "type": "number", + "description": "The outer radius of the cylinder region along the X and Z axes, in meters.", + "minimum": 0 + }, + "height": { + "type": "number", + "description": "The height of the cylinder in meters along the Y-axis, in meters.", + "minimum": 0 + }, + "minAngle": { + "type": "number", + "description": "The minimum angle of the cylinder region in radians. In other words, this is the angle where the cylinder region starts. Must be in the range [-pi, pi].", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + "default": -3.14159265359 + }, + "maxAngle": { + "type": "number", + "description": "The maximum angle of the cylinder region in radians. In other words, this is the angle where the cylinder region ends. Must be in the range [-pi, pi].", + "minimum": -3.14159265359, + "maximum": 3.14159265359, + "default": 3.14159265359 + } + }, + "required": [ + "minRadius", + "maxRadius", + "height" + ] +} \ No newline at end of file