import{S as Ar,i as Lr,s as Tr,e as a,k as p,w as m,t as r,M as Dr,c as l,d as t,m as h,a as n,x as v,h as i,b as f,N as Ir,G as s,g as c,y as b,L as qr,q as _,o as g,B as y,v as Br}from"../chunks/vendor-hf-doc-builder.js";import{I as B}from"../chunks/IconCopyLink-hf-doc-builder.js";import{C as te}from"../chunks/CodeBlock-hf-doc-builder.js";function Mr(Mn){let $,cs,k,M,Ke,se,ka,Ve,Pa,ps,N,Sa,ae,xa,Ca,hs,ke,Oa,fs,Pe,Ia,us,U,Aa,Se,La,Ta,ds,xe,Da,ms,le,vs,j,qa,We,Ba,Ma,Ye,Na,Ua,bs,ne,_s,P,z,Je,oe,za,Xe,Ra,gs,Ce,Ga,ys,R,Ha,Oe,Qa,Fa,ws,S,G,Ze,re,Ka,et,Va,js,w,Wa,tt,Ya,Ja,st,Xa,Za,at,el,tl,Es,ie,$s,Ie,sl,ks,Ps,Ss,ce,Nn,xs,Cs,Os,x,H,lt,pe,al,nt,ll,Is,Ae,nl,As,he,Ls,Q,ol,ot,rl,il,Ts,Le,cl,Ds,u,F,rt,pl,hl,it,fl,ul,dl,ct,pt,ml,vl,ht,ft,bl,_l,ut,dt,gl,yl,mt,vt,wl,jl,bt,_t,El,$l,gt,yt,kl,Pl,wt,jt,Sl,xl,Et,$t,Cl,Ol,kt,Pt,Il,Al,St,xt,Ll,Tl,Ct,Ot,Dl,ql,It,At,Bl,Ml,Lt,Tt,Nl,Ul,Dt,qt,zl,Rl,Bt,Mt,Gl,Hl,Nt,Ut,Ql,qs,K,Fl,fe,Kl,Vl,Bs,ue,Ms,Te,Wl,Ns,Us,zs,de,Un,Rs,Gs,Hs,C,V,zt,me,Yl,Rt,Jl,Qs,De,Xl,Fs,E,O,Zl,Gt,en,tn,Ht,sn,an,ln,I,nn,Qt,on,rn,Ft,cn,pn,hn,ve,fn,Kt,un,dn,Ks,qe,mn,Vs,W,be,vn,Vt,bn,_n,gn,A,yn,Wt,wn,jn,Yt,En,$n,Ws,Be,kn,Ys,_e,Js,L,Y,Jt,ge,Pn,Xt,Sn,Xs,T,J,Zt,ye,xn,es,Cn,Zs,Me,On,ea,D,X,ts,we,In,ss,An,ta,Ne,Ln,sa,Ue,as,ls,ns,Tn,aa,q,Z,os,je,Dn,rs,qn,la,Ee,na,ze,Bn,oa,$e,ra;return se=new B({}),le=new te({props:{code:"pip install --upgrade simulate",highlighted:'pip install <span class="hljs-comment">--upgrade simulate</span>'}}),ne=new te({props:{code:"make style",highlighted:'<span class="hljs-attribute">make style</span>'}}),oe=new B({}),re=new B({}),ie=new te({props:{code:`from simulate import Scene

scene = Scene.create_from('tests/test_assets/fixtures/Box.gltf')  # either local (priority) or on the hub with full path to file
scene = Scene.create_from('simulate-tests/Box/glTF/Box.gltf', is_local=False)  # Set priority to the hub file

scene.save('local_dir/file.gltf')  # Save to a local file
scene.push_to_hub('simulate-tests/Debug/glTF/Box.gltf')  # Save to the hub`,highlighted:`from simulate import Scene

scene = <span class="hljs-module-access"><span class="hljs-module"><span class="hljs-identifier">Scene</span>.</span></span>create<span class="hljs-constructor">_from(&#x27;<span class="hljs-params">tests</span><span class="hljs-operator">/</span><span class="hljs-params">test_assets</span><span class="hljs-operator">/</span><span class="hljs-params">fixtures</span><span class="hljs-operator">/</span>Box.<span class="hljs-params">gltf</span>&#x27;)</span>  # either local (priority) <span class="hljs-keyword">or</span> on the hub <span class="hljs-keyword">with</span> full path <span class="hljs-keyword">to</span> file
scene = <span class="hljs-module-access"><span class="hljs-module"><span class="hljs-identifier">Scene</span>.</span></span>create<span class="hljs-constructor">_from(&#x27;<span class="hljs-params">simulate</span>-<span class="hljs-params">tests</span><span class="hljs-operator">/</span>Box<span class="hljs-operator">/</span><span class="hljs-params">glTF</span><span class="hljs-operator">/</span>Box.<span class="hljs-params">gltf</span>&#x27;, <span class="hljs-params">is_local</span>=False)</span>  # Set priority <span class="hljs-keyword">to</span> the hub file

scene.save(&#x27;local_dir/file.gltf&#x27;)  # Save <span class="hljs-keyword">to</span> a local file
scene.push<span class="hljs-constructor">_to_hub(&#x27;<span class="hljs-params">simulate</span>-<span class="hljs-params">tests</span><span class="hljs-operator">/</span>Debug<span class="hljs-operator">/</span><span class="hljs-params">glTF</span><span class="hljs-operator">/</span>Box.<span class="hljs-params">gltf</span>&#x27;)</span>  # Save <span class="hljs-keyword">to</span> the hub`}}),pe=new B({}),he=new te({props:{code:`

scene
Scene(dimensionality=3, engine='PyVistaEngine')
\u2514\u2500\u2500 plane_01 (Plane - Mesh: 121 points, 100 cells)
    \u2514\u2500\u2500 sphere_02 (Sphere - Mesh: 842 points, 870 cells)
`,highlighted:`import simulate as sm

<span class="hljs-built_in">scene</span> = sm.Scene()
<span class="hljs-built_in">scene</span> += sm.Plane() + sm.Sphere(<span class="hljs-built_in">position</span>=[<span class="hljs-number">0</span>, <span class="hljs-number">1</span>, <span class="hljs-number">0</span>], <span class="hljs-built_in">radius</span>=<span class="hljs-number">0.2</span>)

&gt;&gt;&gt; <span class="hljs-built_in">scene</span>
&gt;&gt;&gt; Scene(dimensionality=<span class="hljs-number">3</span>, engine=&#x27;PyVistaEngine&#x27;)
&gt;&gt;&gt; \u2514\u2500\u2500 plane_01 (Plane - Mesh: <span class="hljs-number">121</span> <span class="hljs-built_in">points</span>, <span class="hljs-number">100</span> cells)
&gt;&gt;&gt;     \u2514\u2500\u2500 sphere_02 (Sphere - Mesh: <span class="hljs-number">842</span> <span class="hljs-built_in">points</span>, <span class="hljs-number">870</span> cells)

<span class="hljs-built_in">scene</span>.<span class="hljs-built_in">show</span>()`}}),ue=new te({props:{code:"python examples/basic/objects.py",highlighted:'python examples<span class="hljs-regexp">/basic/</span>objects.py'}}),me=new B({}),_e=new te({props:{code:`
scene
Scene(dimensionality=3, engine='pyvista')
\u251C\u2500\u2500 plane_01 (Plane - Mesh: 121 points, 100 cells)
\u2502   \u2514\u2500\u2500 sphere_02 (Sphere - Mesh: 842 points, 870 cells)
\u251C\u2500\u2500 sphere_03 (Sphere - Mesh: 842 points, 870 cells)
\u2514\u2500\u2500 sphere_04 (Sphere - Mesh: 842 points, 870 cells)

scene.remove(scene.sphere_04)
Scene(dimensionality=3, engine='pyvista')
\u251C\u2500\u2500 plane_01 (Plane - Mesh: 121 points, 100 cells)
\u2502   \u2514\u2500\u2500 sphere_02 (Sphere - Mesh: 842 points, 870 cells)
\u2514\u2500\u2500 sphere_03 (Sphere - Mesh: 842 points, 870 cells)`,highlighted:`<span class="hljs-comment"># Add two copy of the sphere to the scene as children of the root node (using list will add all objects on the same level)</span>
<span class="hljs-comment"># Using \`.copy()\` will create a copy of an object (the copy doesn&#x27;t have any parent or children)</span>
scene += [scene.plane_01.sphere_02.copy(), scene.plane_01.sphere_02.copy()]

&gt;&gt;&gt; scene
&gt;&gt;&gt; Scene(dimensionality=3, engine=&#x27;pyvista&#x27;)
&gt;&gt;&gt; \u251C\u2500\u2500 plane_01 (Plane - Mesh:<span class="hljs-number"> 121 </span>points,<span class="hljs-number"> 100 </span>cells)
&gt;&gt;&gt; \u2502   \u2514\u2500\u2500 sphere_02 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells)
&gt;&gt;&gt; \u251C\u2500\u2500 sphere_03 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells)
&gt;&gt;&gt; \u2514\u2500\u2500 sphere_04 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells)

<span class="hljs-comment"># Remove the last added sphere</span>
&gt;&gt;&gt; scene.remove(scene.sphere_04)
&gt;&gt;&gt; Scene(dimensionality=3, engine=&#x27;pyvista&#x27;)
&gt;&gt;&gt; \u251C\u2500\u2500 plane_01 (Plane - Mesh:<span class="hljs-number"> 121 </span>points,<span class="hljs-number"> 100 </span>cells)
&gt;&gt;&gt; \u2502   \u2514\u2500\u2500 sphere_02 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells)
&gt;&gt;&gt; \u2514\u2500\u2500 sphere_03 (Sphere - Mesh:<span class="hljs-number"> 842 </span>points,<span class="hljs-number"> 870 </span>cells)`}}),ge=new B({}),ye=new B({}),we=new B({}),je=new B({}),Ee=new te({props:{code:`
<h3 class="relative group">
	<a 
		id="visualization-engine" 
		class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" 
		href="#visualization-engine"
	>
		<span><IconCopyLink/></span>
	</a>
	<span>
		Visualization engine
	</span>
</h3>


A default vizualization engine is provided with the vtk backend of \`pyvista\`.

Starting the vizualization engine can be done simply with \`.show()\`.`,highlighted:`
&lt;h3 id=<span class="hljs-string">&quot;visualization-engine&quot;</span>&gt;Visualization engine&lt;/h3&gt;

A <span class="hljs-keyword">default</span> vizualization engine <span class="hljs-keyword">is</span> provided <span class="hljs-keyword">with</span> the vtk backend of <span class="hljs-string">\`pyvista\`</span>.

Starting the vizualization engine can be done simply <span class="hljs-keyword">with</span> <span class="hljs-string">\`.show()\`</span>.`}}),$e=new te({props:{code:`
You can find bridges to other rendering/simulation engines in the \`integrations\` directory.

<h3 class="relative group">
	<a 
		id="tips" 
		class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" 
		href="#tips"
	>
		<span><IconCopyLink/></span>
	</a>
	<span>
		Tips
	</span>
</h3>


If you are running on GCP, remember to not install \`pyvistaqt\`, and if you did so, uninstall it in your environment, since QT doesn't work well on GCP.
`,highlighted:`
You can find bridges <span class="hljs-keyword">to</span> other rendering/simulation engines <span class="hljs-keyword">in</span> <span class="hljs-keyword">the</span> \`integrations\` directory.

&lt;h3 <span class="hljs-built_in">id</span>=<span class="hljs-string">&quot;tips&quot;</span>&gt;Tips&lt;/h3&gt;

If you are <span class="hljs-built_in">running</span> <span class="hljs-keyword">on</span> GCP, remember <span class="hljs-keyword">to</span> <span class="hljs-keyword">not</span> install \`pyvistaqt\`, <span class="hljs-keyword">and</span> <span class="hljs-keyword">if</span> you did so, uninstall <span class="hljs-keyword">it</span> <span class="hljs-keyword">in</span> your environment, <span class="hljs-keyword">since</span> QT doesn&#x27;t work well <span class="hljs-keyword">on</span> GCP.
`}}),{c(){$=a("meta"),cs=p(),k=a("h1"),M=a("a"),Ke=a("span"),m(se.$$.fragment),ka=p(),Ve=a("span"),Pa=r("Quicktour"),ps=p(),N=a("p"),Sa=r("Simulate\u2019s API is inspired by the great "),ae=a("a"),xa=r("Kubric\u2019s API"),Ca=r(`.
The user create a scene and add assets in it (objects, cameras, lights if needed).
Once the scene is created you can save/share it and also render or do simulations using one of the backend rendering/simulation engines (at the moment Unity, Blender and Godot). The saving/sharing format is engine agnostic and using the industry standard glTF format for saving scenes.`),hs=p(),ke=a("p"),Oa=r("Let\u2019s do a quick exploration together."),fs=p(),Pe=a("p"),Ia=r("We\u2019ll use the default backend which is a simple"),us=p(),U=a("p"),Aa=r("To install and contribute (from "),Se=a("a"),La=r("CONTRIBUTING.md"),Ta=r(")"),ds=p(),xe=a("p"),Da=r("Create a virtual env and then install the code style/quality tools as well as the code base locally"),ms=p(),m(le.$$.fragment),vs=p(),j=a("p"),qa=r("Before you merge a PR, fix the style (we use "),We=a("code"),Ba=r("isort"),Ma=r(" + "),Ye=a("code"),Na=r("black"),Ua=r(")"),bs=p(),m(ne.$$.fragment),_s=p(),P=a("h2"),z=a("a"),Je=a("span"),m(oe.$$.fragment),za=p(),Xe=a("span"),Ra=r("Project Structure"),gs=p(),Ce=a("p"),Ga=r("The Python API is located in src/simulate. It allows creation and loading of scenes, and sending commands to the backend."),ys=p(),R=a("p"),Ha=r("The backend, currently just Unity, is located in "),Oe=a("a"),Qa=r("integrations/Unity"),Fa=r(`.
This is currently a Unity editor project, which must be opened in Unity 2021.3.2f1.
In the future, this will be built as an executable, and spawned by the Python API.`),ws=p(),S=a("h2"),G=a("a"),Ze=a("span"),m(re.$$.fragment),Ka=p(),et=a("span"),Va=r("Loading a scene from the hub or a local file"),js=p(),w=a("p"),Wa=r("Loading a scene from a local file or the hub is done with "),tt=a("code"),Ya=r("Scene.create_from()"),Ja=r(", saving or pushing to the hub with "),st=a("code"),Xa=r("scene.save()"),Za=r(" or "),at=a("code"),el=r("scene.push_to_hub()"),tl=r(":"),Es=p(),m(ie.$$.fragment),$s=p(),Ie=a("p"),sl=r("<p align=\u201Ccenter\u201D>"),ks=p(),Ps=a("br"),Ss=p(),ce=a("img"),xs=p(),Cs=a("br"),Os=r(`
&lt;p>
`),x=a("h2"),H=a("a"),lt=a("span"),m(pe.$$.fragment),al=p(),nt=a("span"),ll=r("Creating a Scene and adding/managing Objects in the scene"),Is=p(),Ae=a("p"),nl=r("Basic example of creating a scene with a plane and a sphere above it:"),As=p(),m(he.$$.fragment),Ls=p(),Q=a("p"),ol=r("An object (as well as the Scene) is just a node in a tree provided with optional mesh (as "),ot=a("code"),rl=r("pyvista.PolyData"),il=r(" structure) and material and/or light, camera, agents special objects."),Ts=p(),Le=a("p"),cl=r("The following objects creation helpers are currently provided:"),Ds=p(),u=a("ul"),F=a("li"),rt=a("code"),pl=r("Object3D"),hl=r(" any object with a "),it=a("code"),fl=r("pyvista.PolyData"),ul=r(" mesh and/or material"),dl=p(),ct=a("li"),pt=a("code"),ml=r("Plane"),vl=p(),ht=a("li"),ft=a("code"),bl=r("Sphere"),_l=p(),ut=a("li"),dt=a("code"),gl=r("Capsule"),yl=p(),mt=a("li"),vt=a("code"),wl=r("Cylinder"),jl=p(),bt=a("li"),_t=a("code"),El=r("Box"),$l=p(),gt=a("li"),yt=a("code"),kl=r("Cone"),Pl=p(),wt=a("li"),jt=a("code"),Sl=r("Line"),xl=p(),Et=a("li"),$t=a("code"),Cl=r("MultipleLines"),Ol=p(),kt=a("li"),Pt=a("code"),Il=r("Tube"),Al=p(),St=a("li"),xt=a("code"),Ll=r("Polygon"),Tl=p(),Ct=a("li"),Ot=a("code"),Dl=r("Ring"),ql=p(),It=a("li"),At=a("code"),Bl=r("Text3D"),Ml=p(),Lt=a("li"),Tt=a("code"),Nl=r("Triangle"),Ul=p(),Dt=a("li"),qt=a("code"),zl=r("Rectangle"),Rl=p(),Bt=a("li"),Mt=a("code"),Gl=r("Circle"),Hl=p(),Nt=a("li"),Ut=a("code"),Ql=r("StructuredGrid"),qs=p(),K=a("p"),Fl=r("Most of these objects can be visualized by running the following "),fe=a("a"),Kl=r("example"),Vl=r(":"),Bs=p(),m(ue.$$.fragment),Ms=p(),Te=a("p"),Wl=r("<p align=\u201Ccenter\u201D>"),Ns=p(),Us=a("br"),zs=p(),de=a("img"),Rs=p(),Gs=a("br"),Hs=r(`
&lt;p>
`),C=a("h3"),V=a("a"),zt=a("span"),m(me.$$.fragment),Yl=p(),Rt=a("span"),Jl=r("Objects are organized in a tree structure"),Qs=p(),De=a("p"),Xl=r("Adding/removing objects:"),Fs=p(),E=a("ul"),O=a("li"),Zl=r("Using the addition ("),Gt=a("code"),en=r("+"),tn=r(") operator (or alternatively the method "),Ht=a("code"),sn=r(".add(object)"),an=r(") will add an object as a child of a previous object."),ln=p(),I=a("li"),nn=r("Objects can be removed with the subtraction ("),Qt=a("code"),on=r("-"),rn=r(") operator or the "),Ft=a("code"),cn=r(".remove(object)"),pn=r(" command."),hn=p(),ve=a("li"),fn=r("The whole scene can be cleared with "),Kt=a("code"),un=r(".clear()"),dn=r("."),Ks=p(),qe=a("p"),mn=r("Accessing objects:"),Vs=p(),W=a("ul"),be=a("li"),vn=r("Objects can be directly accessed as attributes of their parents using their names (given with  "),Vt=a("code"),bn=r("name"),_n=r(" attribute at creation or automatically generated from the class name + creation counter)."),gn=p(),A=a("li"),yn=r("Objects can also be accessed from their names with "),Wt=a("code"),wn=r(".get(name)"),jn=r(" or by navigating in the tree using the various "),Yt=a("code"),En=r("tree_*"),$n=r(" attributes available on any node."),Ws=p(),Be=a("p"),kn=r("Here are a couple of examples of manipulations:"),Ys=p(),m(_e.$$.fragment),Js=p(),L=a("h3"),Y=a("a"),Jt=a("span"),m(ge.$$.fragment),Pn=p(),Xt=a("span"),Sn=r("Objects can be translated, rotated, scaled"),Xs=r(`

Here are a couple of examples:
\`\`\`
# Let's translate our floor (with the first sphere, it's child)
scene.plane_01.translate_x(1)
`),T=a("h1"),J=a("a"),Zt=a("span"),m(ye.$$.fragment),xn=p(),es=a("span"),Cn=r("Let\u2019s scale the second sphere uniformly"),Zs=p(),Me=a("p"),On=r("scene.sphere_03.scale(0.1)"),ea=p(),D=a("h1"),X=a("a"),ts=a("span"),m(we.$$.fragment),In=p(),ss=a("span"),An=r("Inspect the current position and scaling values"),ta=p(),Ne=a("p"),Ln=r("print(scene.plane_01.position)"),sa=p(),Ue=a("blockquote"),as=a("blockquote"),ls=a("blockquote"),ns=a("p"),Tn=r(`array([1., 0., 0.])
print(scene.sphere_03.scaling)
array([0.1, 0.1, 0.1])`),aa=p(),q=a("h1"),Z=a("a"),os=a("span"),m(je.$$.fragment),Dn=p(),rs=a("span"),qn=r("We can also translate from a vector and rotate from a quaternion or along the various axis"),la=p(),m(Ee.$$.fragment),na=p(),ze=a("p"),Bn=r("scene.show()"),oa=p(),m($e.$$.fragment),this.h()},l(e){const o=Dr('[data-svelte="svelte-1phssyn"]',document.head);$=l(o,"META",{name:!0,content:!0}),o.forEach(t),cs=h(e),k=l(e,"H1",{class:!0});var ia=n(k);M=l(ia,"A",{id:!0,class:!0,href:!0});var zn=n(M);Ke=l(zn,"SPAN",{});var Rn=n(Ke);v(se.$$.fragment,Rn),Rn.forEach(t),zn.forEach(t),ka=h(ia),Ve=l(ia,"SPAN",{});var Gn=n(Ve);Pa=i(Gn,"Quicktour"),Gn.forEach(t),ia.forEach(t),ps=h(e),N=l(e,"P",{});var ca=n(N);Sa=i(ca,"Simulate\u2019s API is inspired by the great "),ae=l(ca,"A",{href:!0,rel:!0});var Hn=n(ae);xa=i(Hn,"Kubric\u2019s API"),Hn.forEach(t),Ca=i(ca,`.
The user create a scene and add assets in it (objects, cameras, lights if needed).
Once the scene is created you can save/share it and also render or do simulations using one of the backend rendering/simulation engines (at the moment Unity, Blender and Godot). The saving/sharing format is engine agnostic and using the industry standard glTF format for saving scenes.`),ca.forEach(t),hs=h(e),ke=l(e,"P",{});var Qn=n(ke);Oa=i(Qn,"Let\u2019s do a quick exploration together."),Qn.forEach(t),fs=h(e),Pe=l(e,"P",{});var Fn=n(Pe);Ia=i(Fn,"We\u2019ll use the default backend which is a simple"),Fn.forEach(t),us=h(e),U=l(e,"P",{});var pa=n(U);Aa=i(pa,"To install and contribute (from "),Se=l(pa,"A",{href:!0});var Kn=n(Se);La=i(Kn,"CONTRIBUTING.md"),Kn.forEach(t),Ta=i(pa,")"),pa.forEach(t),ds=h(e),xe=l(e,"P",{});var Vn=n(xe);Da=i(Vn,"Create a virtual env and then install the code style/quality tools as well as the code base locally"),Vn.forEach(t),ms=h(e),v(le.$$.fragment,e),vs=h(e),j=l(e,"P",{});var Re=n(j);qa=i(Re,"Before you merge a PR, fix the style (we use "),We=l(Re,"CODE",{});var Wn=n(We);Ba=i(Wn,"isort"),Wn.forEach(t),Ma=i(Re," + "),Ye=l(Re,"CODE",{});var Yn=n(Ye);Na=i(Yn,"black"),Yn.forEach(t),Ua=i(Re,")"),Re.forEach(t),bs=h(e),v(ne.$$.fragment,e),_s=h(e),P=l(e,"H2",{class:!0});var ha=n(P);z=l(ha,"A",{id:!0,class:!0,href:!0});var Jn=n(z);Je=l(Jn,"SPAN",{});var Xn=n(Je);v(oe.$$.fragment,Xn),Xn.forEach(t),Jn.forEach(t),za=h(ha),Xe=l(ha,"SPAN",{});var Zn=n(Xe);Ra=i(Zn,"Project Structure"),Zn.forEach(t),ha.forEach(t),gs=h(e),Ce=l(e,"P",{});var eo=n(Ce);Ga=i(eo,"The Python API is located in src/simulate. It allows creation and loading of scenes, and sending commands to the backend."),eo.forEach(t),ys=h(e),R=l(e,"P",{});var fa=n(R);Ha=i(fa,"The backend, currently just Unity, is located in "),Oe=l(fa,"A",{href:!0});var to=n(Oe);Qa=i(to,"integrations/Unity"),to.forEach(t),Fa=i(fa,`.
This is currently a Unity editor project, which must be opened in Unity 2021.3.2f1.
In the future, this will be built as an executable, and spawned by the Python API.`),fa.forEach(t),ws=h(e),S=l(e,"H2",{class:!0});var ua=n(S);G=l(ua,"A",{id:!0,class:!0,href:!0});var so=n(G);Ze=l(so,"SPAN",{});var ao=n(Ze);v(re.$$.fragment,ao),ao.forEach(t),so.forEach(t),Ka=h(ua),et=l(ua,"SPAN",{});var lo=n(et);Va=i(lo,"Loading a scene from the hub or a local file"),lo.forEach(t),ua.forEach(t),js=h(e),w=l(e,"P",{});var ee=n(w);Wa=i(ee,"Loading a scene from a local file or the hub is done with "),tt=l(ee,"CODE",{});var no=n(tt);Ya=i(no,"Scene.create_from()"),no.forEach(t),Ja=i(ee,", saving or pushing to the hub with "),st=l(ee,"CODE",{});var oo=n(st);Xa=i(oo,"scene.save()"),oo.forEach(t),Za=i(ee," or "),at=l(ee,"CODE",{});var ro=n(at);el=i(ro,"scene.push_to_hub()"),ro.forEach(t),tl=i(ee,":"),ee.forEach(t),Es=h(e),v(ie.$$.fragment,e),$s=h(e),Ie=l(e,"P",{});var io=n(Ie);sl=i(io,"<p align=\u201Ccenter\u201D>"),io.forEach(t),ks=h(e),Ps=l(e,"BR",{}),Ss=h(e),ce=l(e,"IMG",{src:!0,width:!0}),xs=h(e),Cs=l(e,"BR",{}),Os=i(e,`
&lt;p>
`),x=l(e,"H2",{class:!0});var da=n(x);H=l(da,"A",{id:!0,class:!0,href:!0});var co=n(H);lt=l(co,"SPAN",{});var po=n(lt);v(pe.$$.fragment,po),po.forEach(t),co.forEach(t),al=h(da),nt=l(da,"SPAN",{});var ho=n(nt);ll=i(ho,"Creating a Scene and adding/managing Objects in the scene"),ho.forEach(t),da.forEach(t),Is=h(e),Ae=l(e,"P",{});var fo=n(Ae);nl=i(fo,"Basic example of creating a scene with a plane and a sphere above it:"),fo.forEach(t),As=h(e),v(he.$$.fragment,e),Ls=h(e),Q=l(e,"P",{});var ma=n(Q);ol=i(ma,"An object (as well as the Scene) is just a node in a tree provided with optional mesh (as "),ot=l(ma,"CODE",{});var uo=n(ot);rl=i(uo,"pyvista.PolyData"),uo.forEach(t),il=i(ma," structure) and material and/or light, camera, agents special objects."),ma.forEach(t),Ts=h(e),Le=l(e,"P",{});var mo=n(Le);cl=i(mo,"The following objects creation helpers are currently provided:"),mo.forEach(t),Ds=h(e),u=l(e,"UL",{});var d=n(u);F=l(d,"LI",{});var is=n(F);rt=l(is,"CODE",{});var vo=n(rt);pl=i(vo,"Object3D"),vo.forEach(t),hl=i(is," any object with a "),it=l(is,"CODE",{});var bo=n(it);fl=i(bo,"pyvista.PolyData"),bo.forEach(t),ul=i(is," mesh and/or material"),is.forEach(t),dl=h(d),ct=l(d,"LI",{});var _o=n(ct);pt=l(_o,"CODE",{});var go=n(pt);ml=i(go,"Plane"),go.forEach(t),_o.forEach(t),vl=h(d),ht=l(d,"LI",{});var yo=n(ht);ft=l(yo,"CODE",{});var wo=n(ft);bl=i(wo,"Sphere"),wo.forEach(t),yo.forEach(t),_l=h(d),ut=l(d,"LI",{});var jo=n(ut);dt=l(jo,"CODE",{});var Eo=n(dt);gl=i(Eo,"Capsule"),Eo.forEach(t),jo.forEach(t),yl=h(d),mt=l(d,"LI",{});var $o=n(mt);vt=l($o,"CODE",{});var ko=n(vt);wl=i(ko,"Cylinder"),ko.forEach(t),$o.forEach(t),jl=h(d),bt=l(d,"LI",{});var Po=n(bt);_t=l(Po,"CODE",{});var So=n(_t);El=i(So,"Box"),So.forEach(t),Po.forEach(t),$l=h(d),gt=l(d,"LI",{});var xo=n(gt);yt=l(xo,"CODE",{});var Co=n(yt);kl=i(Co,"Cone"),Co.forEach(t),xo.forEach(t),Pl=h(d),wt=l(d,"LI",{});var Oo=n(wt);jt=l(Oo,"CODE",{});var Io=n(jt);Sl=i(Io,"Line"),Io.forEach(t),Oo.forEach(t),xl=h(d),Et=l(d,"LI",{});var Ao=n(Et);$t=l(Ao,"CODE",{});var Lo=n($t);Cl=i(Lo,"MultipleLines"),Lo.forEach(t),Ao.forEach(t),Ol=h(d),kt=l(d,"LI",{});var To=n(kt);Pt=l(To,"CODE",{});var Do=n(Pt);Il=i(Do,"Tube"),Do.forEach(t),To.forEach(t),Al=h(d),St=l(d,"LI",{});var qo=n(St);xt=l(qo,"CODE",{});var Bo=n(xt);Ll=i(Bo,"Polygon"),Bo.forEach(t),qo.forEach(t),Tl=h(d),Ct=l(d,"LI",{});var Mo=n(Ct);Ot=l(Mo,"CODE",{});var No=n(Ot);Dl=i(No,"Ring"),No.forEach(t),Mo.forEach(t),ql=h(d),It=l(d,"LI",{});var Uo=n(It);At=l(Uo,"CODE",{});var zo=n(At);Bl=i(zo,"Text3D"),zo.forEach(t),Uo.forEach(t),Ml=h(d),Lt=l(d,"LI",{});var Ro=n(Lt);Tt=l(Ro,"CODE",{});var Go=n(Tt);Nl=i(Go,"Triangle"),Go.forEach(t),Ro.forEach(t),Ul=h(d),Dt=l(d,"LI",{});var Ho=n(Dt);qt=l(Ho,"CODE",{});var Qo=n(qt);zl=i(Qo,"Rectangle"),Qo.forEach(t),Ho.forEach(t),Rl=h(d),Bt=l(d,"LI",{});var Fo=n(Bt);Mt=l(Fo,"CODE",{});var Ko=n(Mt);Gl=i(Ko,"Circle"),Ko.forEach(t),Fo.forEach(t),Hl=h(d),Nt=l(d,"LI",{});var Vo=n(Nt);Ut=l(Vo,"CODE",{});var Wo=n(Ut);Ql=i(Wo,"StructuredGrid"),Wo.forEach(t),Vo.forEach(t),d.forEach(t),qs=h(e),K=l(e,"P",{});var va=n(K);Fl=i(va,"Most of these objects can be visualized by running the following "),fe=l(va,"A",{href:!0,rel:!0});var Yo=n(fe);Kl=i(Yo,"example"),Yo.forEach(t),Vl=i(va,":"),va.forEach(t),Bs=h(e),v(ue.$$.fragment,e),Ms=h(e),Te=l(e,"P",{});var Jo=n(Te);Wl=i(Jo,"<p align=\u201Ccenter\u201D>"),Jo.forEach(t),Ns=h(e),Us=l(e,"BR",{}),zs=h(e),de=l(e,"IMG",{src:!0,width:!0}),Rs=h(e),Gs=l(e,"BR",{}),Hs=i(e,`
&lt;p>
`),C=l(e,"H3",{class:!0});var ba=n(C);V=l(ba,"A",{id:!0,class:!0,href:!0});var Xo=n(V);zt=l(Xo,"SPAN",{});var Zo=n(zt);v(me.$$.fragment,Zo),Zo.forEach(t),Xo.forEach(t),Yl=h(ba),Rt=l(ba,"SPAN",{});var er=n(Rt);Jl=i(er,"Objects are organized in a tree structure"),er.forEach(t),ba.forEach(t),Qs=h(e),De=l(e,"P",{});var tr=n(De);Xl=i(tr,"Adding/removing objects:"),tr.forEach(t),Fs=h(e),E=l(e,"UL",{});var Ge=n(E);O=l(Ge,"LI",{});var He=n(O);Zl=i(He,"Using the addition ("),Gt=l(He,"CODE",{});var sr=n(Gt);en=i(sr,"+"),sr.forEach(t),tn=i(He,") operator (or alternatively the method "),Ht=l(He,"CODE",{});var ar=n(Ht);sn=i(ar,".add(object)"),ar.forEach(t),an=i(He,") will add an object as a child of a previous object."),He.forEach(t),ln=h(Ge),I=l(Ge,"LI",{});var Qe=n(I);nn=i(Qe,"Objects can be removed with the subtraction ("),Qt=l(Qe,"CODE",{});var lr=n(Qt);on=i(lr,"-"),lr.forEach(t),rn=i(Qe,") operator or the "),Ft=l(Qe,"CODE",{});var nr=n(Ft);cn=i(nr,".remove(object)"),nr.forEach(t),pn=i(Qe," command."),Qe.forEach(t),hn=h(Ge),ve=l(Ge,"LI",{});var _a=n(ve);fn=i(_a,"The whole scene can be cleared with "),Kt=l(_a,"CODE",{});var or=n(Kt);un=i(or,".clear()"),or.forEach(t),dn=i(_a,"."),_a.forEach(t),Ge.forEach(t),Ks=h(e),qe=l(e,"P",{});var rr=n(qe);mn=i(rr,"Accessing objects:"),rr.forEach(t),Vs=h(e),W=l(e,"UL",{});var ga=n(W);be=l(ga,"LI",{});var ya=n(be);vn=i(ya,"Objects can be directly accessed as attributes of their parents using their names (given with  "),Vt=l(ya,"CODE",{});var ir=n(Vt);bn=i(ir,"name"),ir.forEach(t),_n=i(ya," attribute at creation or automatically generated from the class name + creation counter)."),ya.forEach(t),gn=h(ga),A=l(ga,"LI",{});var Fe=n(A);yn=i(Fe,"Objects can also be accessed from their names with "),Wt=l(Fe,"CODE",{});var cr=n(Wt);wn=i(cr,".get(name)"),cr.forEach(t),jn=i(Fe," or by navigating in the tree using the various "),Yt=l(Fe,"CODE",{});var pr=n(Yt);En=i(pr,"tree_*"),pr.forEach(t),$n=i(Fe," attributes available on any node."),Fe.forEach(t),ga.forEach(t),Ws=h(e),Be=l(e,"P",{});var hr=n(Be);kn=i(hr,"Here are a couple of examples of manipulations:"),hr.forEach(t),Ys=h(e),v(_e.$$.fragment,e),Js=h(e),L=l(e,"H3",{class:!0});var wa=n(L);Y=l(wa,"A",{id:!0,class:!0,href:!0});var fr=n(Y);Jt=l(fr,"SPAN",{});var ur=n(Jt);v(ge.$$.fragment,ur),ur.forEach(t),fr.forEach(t),Pn=h(wa),Xt=l(wa,"SPAN",{});var dr=n(Xt);Sn=i(dr,"Objects can be translated, rotated, scaled"),dr.forEach(t),wa.forEach(t),Xs=i(e,`

Here are a couple of examples:
\`\`\`
# Let's translate our floor (with the first sphere, it's child)
scene.plane_01.translate_x(1)
`),T=l(e,"H1",{class:!0});var ja=n(T);J=l(ja,"A",{id:!0,class:!0,href:!0});var mr=n(J);Zt=l(mr,"SPAN",{});var vr=n(Zt);v(ye.$$.fragment,vr),vr.forEach(t),mr.forEach(t),xn=h(ja),es=l(ja,"SPAN",{});var br=n(es);Cn=i(br,"Let\u2019s scale the second sphere uniformly"),br.forEach(t),ja.forEach(t),Zs=h(e),Me=l(e,"P",{});var _r=n(Me);On=i(_r,"scene.sphere_03.scale(0.1)"),_r.forEach(t),ea=h(e),D=l(e,"H1",{class:!0});var Ea=n(D);X=l(Ea,"A",{id:!0,class:!0,href:!0});var gr=n(X);ts=l(gr,"SPAN",{});var yr=n(ts);v(we.$$.fragment,yr),yr.forEach(t),gr.forEach(t),In=h(Ea),ss=l(Ea,"SPAN",{});var wr=n(ss);An=i(wr,"Inspect the current position and scaling values"),wr.forEach(t),Ea.forEach(t),ta=h(e),Ne=l(e,"P",{});var jr=n(Ne);Ln=i(jr,"print(scene.plane_01.position)"),jr.forEach(t),sa=h(e),Ue=l(e,"BLOCKQUOTE",{});var Er=n(Ue);as=l(Er,"BLOCKQUOTE",{});var $r=n(as);ls=l($r,"BLOCKQUOTE",{});var kr=n(ls);ns=l(kr,"P",{});var Pr=n(ns);Tn=i(Pr,`array([1., 0., 0.])
print(scene.sphere_03.scaling)
array([0.1, 0.1, 0.1])`),Pr.forEach(t),kr.forEach(t),$r.forEach(t),Er.forEach(t),aa=h(e),q=l(e,"H1",{class:!0});var $a=n(q);Z=l($a,"A",{id:!0,class:!0,href:!0});var Sr=n(Z);os=l(Sr,"SPAN",{});var xr=n(os);v(je.$$.fragment,xr),xr.forEach(t),Sr.forEach(t),Dn=h($a),rs=l($a,"SPAN",{});var Cr=n(rs);qn=i(Cr,"We can also translate from a vector and rotate from a quaternion or along the various axis"),Cr.forEach(t),$a.forEach(t),la=h(e),v(Ee.$$.fragment,e),na=h(e),ze=l(e,"P",{});var Or=n(ze);Bn=i(Or,"scene.show()"),Or.forEach(t),oa=h(e),v($e.$$.fragment,e),this.h()},h(){f($,"name","hf:doc:metadata"),f($,"content",JSON.stringify(Nr)),f(M,"id","quicktour"),f(M,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(M,"href","#quicktour"),f(k,"class","relative group"),f(ae,"href","https://github.com/google-research/kubric"),f(ae,"rel","nofollow"),f(Se,"href","CONTRIBUTING.md"),f(z,"id","project-structure"),f(z,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(z,"href","#project-structure"),f(P,"class","relative group"),f(Oe,"href","integrations/Unity"),f(G,"id","loading-a-scene-from-the-hub-or-a-local-file"),f(G,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(G,"href","#loading-a-scene-from-the-hub-or-a-local-file"),f(S,"class","relative group"),Ir(ce.src,Nn="https://user-images.githubusercontent.com/10695622/191554717-acba4764-a4f4-4609-834a-39ddb50b844a.png")||f(ce,"src",Nn),f(ce,"width","400"),f(H,"id","creating-a-scene-and-addingmanaging-objects-in-the-scene"),f(H,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(H,"href","#creating-a-scene-and-addingmanaging-objects-in-the-scene"),f(x,"class","relative group"),f(fe,"href","https://github.com/huggingface/simulate/tree/main/examples/objects.py"),f(fe,"rel","nofollow"),Ir(de.src,Un="https://user-images.githubusercontent.com/10695622/191562825-49d4c692-a1ed-44e9-bdb9-da5f0bfb9828.png")||f(de,"src",Un),f(de,"width","400"),f(V,"id","objects-are-organized-in-a-tree-structure"),f(V,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(V,"href","#objects-are-organized-in-a-tree-structure"),f(C,"class","relative group"),f(Y,"id","objects-can-be-translated-rotated-scaled"),f(Y,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(Y,"href","#objects-can-be-translated-rotated-scaled"),f(L,"class","relative group"),f(J,"id","let\u2019s-scale-the-second-sphere-uniformly"),f(J,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(J,"href","#let\u2019s-scale-the-second-sphere-uniformly"),f(T,"class","relative group"),f(X,"id","inspect-the-current-position-and-scaling-values"),f(X,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(X,"href","#inspect-the-current-position-and-scaling-values"),f(D,"class","relative group"),f(Z,"id","we-can-also-translate-from-a-vector-and-rotate-from-a-quaternion-or-along-the-various-axis"),f(Z,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),f(Z,"href","#we-can-also-translate-from-a-vector-and-rotate-from-a-quaternion-or-along-the-various-axis"),f(q,"class","relative group")},m(e,o){s(document.head,$),c(e,cs,o),c(e,k,o),s(k,M),s(M,Ke),b(se,Ke,null),s(k,ka),s(k,Ve),s(Ve,Pa),c(e,ps,o),c(e,N,o),s(N,Sa),s(N,ae),s(ae,xa),s(N,Ca),c(e,hs,o),c(e,ke,o),s(ke,Oa),c(e,fs,o),c(e,Pe,o),s(Pe,Ia),c(e,us,o),c(e,U,o),s(U,Aa),s(U,Se),s(Se,La),s(U,Ta),c(e,ds,o),c(e,xe,o),s(xe,Da),c(e,ms,o),b(le,e,o),c(e,vs,o),c(e,j,o),s(j,qa),s(j,We),s(We,Ba),s(j,Ma),s(j,Ye),s(Ye,Na),s(j,Ua),c(e,bs,o),b(ne,e,o),c(e,_s,o),c(e,P,o),s(P,z),s(z,Je),b(oe,Je,null),s(P,za),s(P,Xe),s(Xe,Ra),c(e,gs,o),c(e,Ce,o),s(Ce,Ga),c(e,ys,o),c(e,R,o),s(R,Ha),s(R,Oe),s(Oe,Qa),s(R,Fa),c(e,ws,o),c(e,S,o),s(S,G),s(G,Ze),b(re,Ze,null),s(S,Ka),s(S,et),s(et,Va),c(e,js,o),c(e,w,o),s(w,Wa),s(w,tt),s(tt,Ya),s(w,Ja),s(w,st),s(st,Xa),s(w,Za),s(w,at),s(at,el),s(w,tl),c(e,Es,o),b(ie,e,o),c(e,$s,o),c(e,Ie,o),s(Ie,sl),c(e,ks,o),c(e,Ps,o),c(e,Ss,o),c(e,ce,o),c(e,xs,o),c(e,Cs,o),c(e,Os,o),c(e,x,o),s(x,H),s(H,lt),b(pe,lt,null),s(x,al),s(x,nt),s(nt,ll),c(e,Is,o),c(e,Ae,o),s(Ae,nl),c(e,As,o),b(he,e,o),c(e,Ls,o),c(e,Q,o),s(Q,ol),s(Q,ot),s(ot,rl),s(Q,il),c(e,Ts,o),c(e,Le,o),s(Le,cl),c(e,Ds,o),c(e,u,o),s(u,F),s(F,rt),s(rt,pl),s(F,hl),s(F,it),s(it,fl),s(F,ul),s(u,dl),s(u,ct),s(ct,pt),s(pt,ml),s(u,vl),s(u,ht),s(ht,ft),s(ft,bl),s(u,_l),s(u,ut),s(ut,dt),s(dt,gl),s(u,yl),s(u,mt),s(mt,vt),s(vt,wl),s(u,jl),s(u,bt),s(bt,_t),s(_t,El),s(u,$l),s(u,gt),s(gt,yt),s(yt,kl),s(u,Pl),s(u,wt),s(wt,jt),s(jt,Sl),s(u,xl),s(u,Et),s(Et,$t),s($t,Cl),s(u,Ol),s(u,kt),s(kt,Pt),s(Pt,Il),s(u,Al),s(u,St),s(St,xt),s(xt,Ll),s(u,Tl),s(u,Ct),s(Ct,Ot),s(Ot,Dl),s(u,ql),s(u,It),s(It,At),s(At,Bl),s(u,Ml),s(u,Lt),s(Lt,Tt),s(Tt,Nl),s(u,Ul),s(u,Dt),s(Dt,qt),s(qt,zl),s(u,Rl),s(u,Bt),s(Bt,Mt),s(Mt,Gl),s(u,Hl),s(u,Nt),s(Nt,Ut),s(Ut,Ql),c(e,qs,o),c(e,K,o),s(K,Fl),s(K,fe),s(fe,Kl),s(K,Vl),c(e,Bs,o),b(ue,e,o),c(e,Ms,o),c(e,Te,o),s(Te,Wl),c(e,Ns,o),c(e,Us,o),c(e,zs,o),c(e,de,o),c(e,Rs,o),c(e,Gs,o),c(e,Hs,o),c(e,C,o),s(C,V),s(V,zt),b(me,zt,null),s(C,Yl),s(C,Rt),s(Rt,Jl),c(e,Qs,o),c(e,De,o),s(De,Xl),c(e,Fs,o),c(e,E,o),s(E,O),s(O,Zl),s(O,Gt),s(Gt,en),s(O,tn),s(O,Ht),s(Ht,sn),s(O,an),s(E,ln),s(E,I),s(I,nn),s(I,Qt),s(Qt,on),s(I,rn),s(I,Ft),s(Ft,cn),s(I,pn),s(E,hn),s(E,ve),s(ve,fn),s(ve,Kt),s(Kt,un),s(ve,dn),c(e,Ks,o),c(e,qe,o),s(qe,mn),c(e,Vs,o),c(e,W,o),s(W,be),s(be,vn),s(be,Vt),s(Vt,bn),s(be,_n),s(W,gn),s(W,A),s(A,yn),s(A,Wt),s(Wt,wn),s(A,jn),s(A,Yt),s(Yt,En),s(A,$n),c(e,Ws,o),c(e,Be,o),s(Be,kn),c(e,Ys,o),b(_e,e,o),c(e,Js,o),c(e,L,o),s(L,Y),s(Y,Jt),b(ge,Jt,null),s(L,Pn),s(L,Xt),s(Xt,Sn),c(e,Xs,o),c(e,T,o),s(T,J),s(J,Zt),b(ye,Zt,null),s(T,xn),s(T,es),s(es,Cn),c(e,Zs,o),c(e,Me,o),s(Me,On),c(e,ea,o),c(e,D,o),s(D,X),s(X,ts),b(we,ts,null),s(D,In),s(D,ss),s(ss,An),c(e,ta,o),c(e,Ne,o),s(Ne,Ln),c(e,sa,o),c(e,Ue,o),s(Ue,as),s(as,ls),s(ls,ns),s(ns,Tn),c(e,aa,o),c(e,q,o),s(q,Z),s(Z,os),b(je,os,null),s(q,Dn),s(q,rs),s(rs,qn),c(e,la,o),b(Ee,e,o),c(e,na,o),c(e,ze,o),s(ze,Bn),c(e,oa,o),b($e,e,o),ra=!0},p:qr,i(e){ra||(_(se.$$.fragment,e),_(le.$$.fragment,e),_(ne.$$.fragment,e),_(oe.$$.fragment,e),_(re.$$.fragment,e),_(ie.$$.fragment,e),_(pe.$$.fragment,e),_(he.$$.fragment,e),_(ue.$$.fragment,e),_(me.$$.fragment,e),_(_e.$$.fragment,e),_(ge.$$.fragment,e),_(ye.$$.fragment,e),_(we.$$.fragment,e),_(je.$$.fragment,e),_(Ee.$$.fragment,e),_($e.$$.fragment,e),ra=!0)},o(e){g(se.$$.fragment,e),g(le.$$.fragment,e),g(ne.$$.fragment,e),g(oe.$$.fragment,e),g(re.$$.fragment,e),g(ie.$$.fragment,e),g(pe.$$.fragment,e),g(he.$$.fragment,e),g(ue.$$.fragment,e),g(me.$$.fragment,e),g(_e.$$.fragment,e),g(ge.$$.fragment,e),g(ye.$$.fragment,e),g(we.$$.fragment,e),g(je.$$.fragment,e),g(Ee.$$.fragment,e),g($e.$$.fragment,e),ra=!1},d(e){t($),e&&t(cs),e&&t(k),y(se),e&&t(ps),e&&t(N),e&&t(hs),e&&t(ke),e&&t(fs),e&&t(Pe),e&&t(us),e&&t(U),e&&t(ds),e&&t(xe),e&&t(ms),y(le,e),e&&t(vs),e&&t(j),e&&t(bs),y(ne,e),e&&t(_s),e&&t(P),y(oe),e&&t(gs),e&&t(Ce),e&&t(ys),e&&t(R),e&&t(ws),e&&t(S),y(re),e&&t(js),e&&t(w),e&&t(Es),y(ie,e),e&&t($s),e&&t(Ie),e&&t(ks),e&&t(Ps),e&&t(Ss),e&&t(ce),e&&t(xs),e&&t(Cs),e&&t(Os),e&&t(x),y(pe),e&&t(Is),e&&t(Ae),e&&t(As),y(he,e),e&&t(Ls),e&&t(Q),e&&t(Ts),e&&t(Le),e&&t(Ds),e&&t(u),e&&t(qs),e&&t(K),e&&t(Bs),y(ue,e),e&&t(Ms),e&&t(Te),e&&t(Ns),e&&t(Us),e&&t(zs),e&&t(de),e&&t(Rs),e&&t(Gs),e&&t(Hs),e&&t(C),y(me),e&&t(Qs),e&&t(De),e&&t(Fs),e&&t(E),e&&t(Ks),e&&t(qe),e&&t(Vs),e&&t(W),e&&t(Ws),e&&t(Be),e&&t(Ys),y(_e,e),e&&t(Js),e&&t(L),y(ge),e&&t(Xs),e&&t(T),y(ye),e&&t(Zs),e&&t(Me),e&&t(ea),e&&t(D),y(we),e&&t(ta),e&&t(Ne),e&&t(sa),e&&t(Ue),e&&t(aa),e&&t(q),y(je),e&&t(la),y(Ee,e),e&&t(na),e&&t(ze),e&&t(oa),y($e,e)}}}const Nr={local:"quicktour",sections:[{local:"project-structure",title:"Project Structure"},{local:"loading-a-scene-from-the-hub-or-a-local-file",title:"Loading a scene from the hub or a local file"},{local:"creating-a-scene-and-addingmanaging-objects-in-the-scene",sections:[{local:"objects-are-organized-in-a-tree-structure",title:"Objects are organized in a tree structure"},{local:"objects-can-be-translated-rotated-scaled",title:"Objects can be translated, rotated, scaled"},{local:"visualization-engine",title:"Visualization engine"},{local:"tips",title:"Tips"}],title:"Creating a Scene and adding/managing Objects in the scene"}],title:"Quicktour"};function Ur(Mn){return Br(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Hr extends Ar{constructor($){super();Lr(this,$,Ur,Mr,Tr,{})}}export{Hr as default,Nr as metadata};
