import{S as bs,i as gs,s as _s,O as La,P as Da,a as n,d as t,b as f,g as p,G as s,L as vs,e as a,k as h,t as i,c as l,m as u,h as c,f as Bo,j as Uo,w as x,x as S,y as C,R as ms,q as O,o as I,B as A,$ as zo,U as Ho,M as Ro,N as qo,v as Vo}from"../chunks/vendor-hf-doc-builder.js";import{I as F}from"../chunks/IconCopyLink-hf-doc-builder.js";function Go(g){const o=document.createElement("textarea");document.body.appendChild(o),o.value=g,o.select(),document.execCommand("copy"),document.body.removeChild(o)}function Qo(g){let o,d,v,b;return{c(){o=La("svg"),d=La("path"),v=La("path"),b=La("rect"),this.h()},l(y){o=Da(y,"svg",{class:!0,xmlns:!0,"aria-hidden":!0,fill:!0,focusable:!0,role:!0,width:!0,height:!0,preserveAspectRatio:!0,viewBox:!0});var m=n(o);d=Da(m,"path",{d:!0,transform:!0}),n(d).forEach(t),v=Da(m,"path",{d:!0,transform:!0}),n(v).forEach(t),b=Da(m,"rect",{fill:!0,width:!0,height:!0}),n(b).forEach(t),m.forEach(t),this.h()},h(){f(d,"d","M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z"),f(d,"transform","translate(0)"),f(v,"d","M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z"),f(v,"transform","translate(0)"),f(b,"fill","none"),f(b,"width","32"),f(b,"height","32"),f(o,"class",g[0]),f(o,"xmlns","http://www.w3.org/2000/svg"),f(o,"aria-hidden","true"),f(o,"fill","currentColor"),f(o,"focusable","false"),f(o,"role","img"),f(o,"width","1em"),f(o,"height","1em"),f(o,"preserveAspectRatio","xMidYMid meet"),f(o,"viewBox","0 0 32 32")},m(y,m){p(y,o,m),s(o,d),s(o,v),s(o,b)},p(y,[m]){m&1&&f(o,"class",y[0])},i:vs,o:vs,d(y){y&&t(o)}}}function Fo(g,o,d){let{classNames:v=""}=o;return g.$$set=b=>{"classNames"in b&&d(0,v=b.classNames)},[v]}class Ko extends bs{constructor(o){super();gs(this,o,Fo,Qo,_s,{classNames:0})}}function Wo(g){let o,d,v,b,y;return{c(){o=a("div"),d=a("div"),v=h(),b=i(g[1]),this.h()},l(m){o=l(m,"DIV",{class:!0});var k=n(o);d=l(k,"DIV",{class:!0,style:!0}),n(d).forEach(t),v=u(k),b=c(k,g[1]),k.forEach(t),this.h()},h(){f(d,"class","absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0"),Bo(d,"border-left-color","transparent"),Bo(d,"border-right-color","transparent"),f(o,"class",y="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow "+g[2]+" "+g[0])},m(m,k){p(m,o,k),s(o,d),s(o,v),s(o,b)},p(m,[k]){k&2&&Uo(b,m[1]),k&5&&y!==(y="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow "+m[2]+" "+m[0])&&f(o,"class",y)},i:vs,o:vs,d(m){m&&t(o)}}}function Yo(g,o,d){let{classNames:v=""}=o,{label:b="Copied"}=o,{position:y="left-1/2 top-full transform -translate-x-1/2 translate-y-2"}=o;return g.$$set=m=>{"classNames"in m&&d(0,v=m.classNames),"label"in m&&d(1,b=m.label),"position"in m&&d(2,y=m.position)},[v,b,y]}class Zo extends bs{constructor(o){super();gs(this,o,Yo,Wo,_s,{classNames:0,label:1,position:2})}}function Jo(g){let o,d,v,b,y,m,k,P,$;return d=new Ko({}),b=new Zo({props:{classNames:g[4]?"opacity-100":"opacity-0"}}),{c(){o=a("button"),x(d.$$.fragment),v=h(),x(b.$$.fragment),this.h()},l(_){o=l(_,"BUTTON",{class:!0,title:!0,type:!0});var E=n(o);S(d.$$.fragment,E),v=u(E),S(b.$$.fragment,E),E.forEach(t),this.h()},h(){f(o,"class",y="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none "+g[0]+" "+(g[2]==="text"?"mx-0.5":"")+" "+(g[2]==="button"?"btn":"")+" "+(g[2]==="button-clear"?"py-1 px-2 border rounded-lg shadow-sm":"")+" "+(!g[4]&&["button-clear","text"].includes(g[2])?"text-gray-600":"")+" "+(g[4]?"text-green-500":"")),f(o,"title",m=g[3]||g[1]||"Copy to clipboard"),f(o,"type","button")},m(_,E){p(_,o,E),C(d,o,null),s(o,v),C(b,o,null),k=!0,P||($=ms(o,"click",g[5]),P=!0)},p(_,[E]){const K={};E&16&&(K.classNames=_[4]?"opacity-100":"opacity-0"),b.$set(K),(!k||E&21&&y!==(y="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none "+_[0]+" "+(_[2]==="text"?"mx-0.5":"")+" "+(_[2]==="button"?"btn":"")+" "+(_[2]==="button-clear"?"py-1 px-2 border rounded-lg shadow-sm":"")+" "+(!_[4]&&["button-clear","text"].includes(_[2])?"text-gray-600":"")+" "+(_[4]?"text-green-500":"")))&&f(o,"class",y),(!k||E&10&&m!==(m=_[3]||_[1]||"Copy to clipboard"))&&f(o,"title",m)},i(_){k||(O(d.$$.fragment,_),O(b.$$.fragment,_),k=!0)},o(_){I(d.$$.fragment,_),I(b.$$.fragment,_),k=!1},d(_){_&&t(o),A(d),A(b),P=!1,$()}}}function Xo(g,o,d){let{classNames:v=""}=o,{label:b=""}=o,{style:y="text"}=o,{title:m=""}=o,{value:k}=o,P=!1,$;zo(()=>{$&&clearTimeout($)});function _(){Go(k),d(4,P=!0),$&&clearTimeout($),$=setTimeout(()=>{d(4,P=!1)},1e3)}return g.$$set=E=>{"classNames"in E&&d(0,v=E.classNames),"label"in E&&d(1,b=E.label),"style"in E&&d(2,y=E.style),"title"in E&&d(3,m=E.title),"value"in E&&d(6,k=E.value)},[v,b,y,m,P,_,k]}class ei extends bs{constructor(o){super();gs(this,o,Xo,Jo,_s,{classNames:0,label:1,style:2,title:3,value:6})}}function ti(g){let o,d,v,b,y,m,k,P;return v=new ei({props:{classNames:"transition duration-200 ease-in-out "+(g[2]&&"opacity-0"),label:"code excerpt",value:g[0]}}),{c(){o=a("div"),d=a("div"),x(v.$$.fragment),b=h(),y=a("pre"),this.h()},l($){o=l($,"DIV",{class:!0});var _=n(o);d=l(_,"DIV",{class:!0});var E=n(d);S(v.$$.fragment,E),E.forEach(t),b=u(_),y=l(_,"PRE",{});var K=n(y);K.forEach(t),_.forEach(t),this.h()},h(){f(d,"class","absolute top-2.5 right-4"),f(o,"class","code-block relative")},m($,_){p($,o,_),s(o,d),C(v,d,null),s(o,b),s(o,y),y.innerHTML=g[1],m=!0,k||(P=[ms(o,"mouseover",g[3]),ms(o,"focus",g[3]),ms(o,"mouseout",g[4]),ms(o,"blur",g[4])],k=!0)},p($,[_]){const E={};_&4&&(E.classNames="transition duration-200 ease-in-out "+($[2]&&"opacity-0")),_&1&&(E.value=$[0]),v.$set(E),(!m||_&2)&&(y.innerHTML=$[1])},i($){m||(O(v.$$.fragment,$),m=!0)},o($){I(v.$$.fragment,$),m=!1},d($){$&&t(o),A(v),k=!1,Ho(P)}}}function si(g,o,d){let v=!0,{code:b=""}=o,{highlighted:y=""}=o;function m(){d(2,v=!1)}function k(){d(2,v=!0)}return g.$$set=P=>{"code"in P&&d(0,b=P.code),"highlighted"in P&&d(1,y=P.highlighted)},[b,y,v,m,k]}class pe extends bs{constructor(o){super();gs(this,o,si,ti,_s,{code:0,highlighted:1})}}function ai(g){let o,d,v,b,y,m,k,P,$,_,E,K,he,Na,Ma,ys,Te,Ba,ws,Le,qa,Es,W,Ua,De,za,Ha,js,Ne,Ra,ks,ue,$s,L,Va,tt,Ga,Qa,st,Fa,Ka,Ps,fe,xs,N,Y,at,de,Wa,lt,Ya,Ss,Me,Za,Cs,Z,Ja,Be,Xa,el,Os,M,J,nt,me,tl,rt,sl,Is,T,al,ot,ll,nl,it,rl,ol,ct,il,cl,As,ve,Ts,qe,pl,Ls,Ds,Ns,be,Qn,Ms,Bs,qs,B,X,pt,ge,hl,ht,ul,Us,Ue,fl,zs,_e,Hs,ee,dl,ut,ml,vl,Rs,ze,bl,Vs,w,te,ft,gl,_l,dt,yl,wl,El,mt,vt,jl,kl,bt,gt,$l,Pl,_t,yt,xl,Sl,wt,Et,Cl,Ol,jt,kt,Il,Al,$t,Pt,Tl,Ll,xt,St,Dl,Nl,Ct,Ot,Ml,Bl,It,At,ql,Ul,Tt,Lt,zl,Hl,Dt,Nt,Rl,Vl,Mt,Bt,Gl,Ql,qt,Ut,Fl,Kl,zt,Ht,Wl,Yl,Rt,Vt,Zl,Jl,Gt,Qt,Xl,Gs,se,en,ye,tn,sn,Qs,we,Fs,He,an,Ks,Ws,Ys,Ee,Fn,Zs,Js,Xs,q,ae,Ft,je,ln,Kt,nn,ea,Re,rn,ta,D,U,on,Wt,cn,pn,Yt,hn,un,fn,z,dn,Zt,mn,vn,Jt,bn,gn,_n,ke,yn,Xt,wn,En,sa,Ve,jn,aa,le,$e,kn,es,$n,Pn,xn,H,Sn,ts,Cn,On,ss,In,An,la,Ge,Tn,na,Pe,ra,R,ne,as,xe,Ln,ls,Dn,oa,V,re,ns,Se,Nn,rs,Mn,ia,Qe,Bn,ca,G,oe,os,Ce,qn,is,Un,pa,Fe,zn,ha,Ke,cs,ps,hs,Hn,ua,Q,ie,us,Oe,Rn,fs,Vn,fa,Ie,da,We,Gn,ma,Ae,va;return m=new F({}),ue=new pe({props:{code:"pip install --upgrade simulate",highlighted:'pip install <span class="hljs-comment">--upgrade simulate</span>'}}),fe=new pe({props:{code:"make style",highlighted:'<span class="hljs-attribute">make style</span>'}}),de=new F({}),me=new F({}),ve=new pe({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`}}),ge=new F({}),_e=new pe({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>()`}}),we=new pe({props:{code:"python examples/basic/objects.py",highlighted:'python examples<span class="hljs-regexp">/basic/</span>objects.py'}}),je=new F({}),Pe=new pe({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)`}}),xe=new F({}),Se=new F({}),Ce=new F({}),Oe=new F({}),Ie=new pe({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>.`}}),Ae=new pe({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(){o=a("meta"),d=h(),v=a("h1"),b=a("a"),y=a("span"),x(m.$$.fragment),k=h(),P=a("span"),$=i("Quicktour"),_=h(),E=a("p"),K=i("Simulate\u2019s API is inspired by the great "),he=a("a"),Na=i("Kubric\u2019s API"),Ma=i(`.
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.`),ys=h(),Te=a("p"),Ba=i("Let\u2019s do a quick exploration together."),ws=h(),Le=a("p"),qa=i("We\u2019ll use the default backend which is a simple"),Es=h(),W=a("p"),Ua=i("To install and contribute (from "),De=a("a"),za=i("CONTRIBUTING.md"),Ha=i(")"),js=h(),Ne=a("p"),Ra=i("Create a virtual env and then install the code style/quality tools as well as the code base locally"),ks=h(),x(ue.$$.fragment),$s=h(),L=a("p"),Va=i("Before you merge a PR, fix the style (we use "),tt=a("code"),Ga=i("isort"),Qa=i(" + "),st=a("code"),Fa=i("black"),Ka=i(")"),Ps=h(),x(fe.$$.fragment),xs=h(),N=a("h2"),Y=a("a"),at=a("span"),x(de.$$.fragment),Wa=h(),lt=a("span"),Ya=i("Project Structure"),Ss=h(),Me=a("p"),Za=i("The Python API is located in src/simulate. It allows creation and loading of scenes, and sending commands to the backend."),Cs=h(),Z=a("p"),Ja=i("The backend, currently just Unity, is located in "),Be=a("a"),Xa=i("integrations/Unity"),el=i(`.
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.`),Os=h(),M=a("h2"),J=a("a"),nt=a("span"),x(me.$$.fragment),tl=h(),rt=a("span"),sl=i("Loading a scene from the hub or a local file"),Is=h(),T=a("p"),al=i("Loading a scene from a local file or the hub is done with "),ot=a("code"),ll=i("Scene.create_from()"),nl=i(", saving or pushing to the hub with "),it=a("code"),rl=i("scene.save()"),ol=i(" or "),ct=a("code"),il=i("scene.push_to_hub()"),cl=i(":"),As=h(),x(ve.$$.fragment),Ts=h(),qe=a("p"),pl=i("<p align=\u201Ccenter\u201D>"),Ls=h(),Ds=a("br"),Ns=h(),be=a("img"),Ms=h(),Bs=a("br"),qs=i(`
&lt;p>
`),B=a("h2"),X=a("a"),pt=a("span"),x(ge.$$.fragment),hl=h(),ht=a("span"),ul=i("Creating a Scene and adding/managing Objects in the scene"),Us=h(),Ue=a("p"),fl=i("Basic example of creating a scene with a plane and a sphere above it:"),zs=h(),x(_e.$$.fragment),Hs=h(),ee=a("p"),dl=i("An object (as well as the Scene) is just a node in a tree provided with optional mesh (as "),ut=a("code"),ml=i("pyvista.PolyData"),vl=i(" structure) and material and/or light, camera, agents special objects."),Rs=h(),ze=a("p"),bl=i("The following objects creation helpers are currently provided:"),Vs=h(),w=a("ul"),te=a("li"),ft=a("code"),gl=i("Object3D"),_l=i(" any object with a "),dt=a("code"),yl=i("pyvista.PolyData"),wl=i(" mesh and/or material"),El=h(),mt=a("li"),vt=a("code"),jl=i("Plane"),kl=h(),bt=a("li"),gt=a("code"),$l=i("Sphere"),Pl=h(),_t=a("li"),yt=a("code"),xl=i("Capsule"),Sl=h(),wt=a("li"),Et=a("code"),Cl=i("Cylinder"),Ol=h(),jt=a("li"),kt=a("code"),Il=i("Box"),Al=h(),$t=a("li"),Pt=a("code"),Tl=i("Cone"),Ll=h(),xt=a("li"),St=a("code"),Dl=i("Line"),Nl=h(),Ct=a("li"),Ot=a("code"),Ml=i("MultipleLines"),Bl=h(),It=a("li"),At=a("code"),ql=i("Tube"),Ul=h(),Tt=a("li"),Lt=a("code"),zl=i("Polygon"),Hl=h(),Dt=a("li"),Nt=a("code"),Rl=i("Ring"),Vl=h(),Mt=a("li"),Bt=a("code"),Gl=i("Text3D"),Ql=h(),qt=a("li"),Ut=a("code"),Fl=i("Triangle"),Kl=h(),zt=a("li"),Ht=a("code"),Wl=i("Rectangle"),Yl=h(),Rt=a("li"),Vt=a("code"),Zl=i("Circle"),Jl=h(),Gt=a("li"),Qt=a("code"),Xl=i("StructuredGrid"),Gs=h(),se=a("p"),en=i("Most of these objects can be visualized by running the following "),ye=a("a"),tn=i("example"),sn=i(":"),Qs=h(),x(we.$$.fragment),Fs=h(),He=a("p"),an=i("<p align=\u201Ccenter\u201D>"),Ks=h(),Ws=a("br"),Ys=h(),Ee=a("img"),Zs=h(),Js=a("br"),Xs=i(`
&lt;p>
`),q=a("h3"),ae=a("a"),Ft=a("span"),x(je.$$.fragment),ln=h(),Kt=a("span"),nn=i("Objects are organized in a tree structure"),ea=h(),Re=a("p"),rn=i("Adding/removing objects:"),ta=h(),D=a("ul"),U=a("li"),on=i("Using the addition ("),Wt=a("code"),cn=i("+"),pn=i(") operator (or alternatively the method "),Yt=a("code"),hn=i(".add(object)"),un=i(") will add an object as a child of a previous object."),fn=h(),z=a("li"),dn=i("Objects can be removed with the subtraction ("),Zt=a("code"),mn=i("-"),vn=i(") operator or the "),Jt=a("code"),bn=i(".remove(object)"),gn=i(" command."),_n=h(),ke=a("li"),yn=i("The whole scene can be cleared with "),Xt=a("code"),wn=i(".clear()"),En=i("."),sa=h(),Ve=a("p"),jn=i("Accessing objects:"),aa=h(),le=a("ul"),$e=a("li"),kn=i("Objects can be directly accessed as attributes of their parents using their names (given with  "),es=a("code"),$n=i("name"),Pn=i(" attribute at creation or automatically generated from the class name + creation counter)."),xn=h(),H=a("li"),Sn=i("Objects can also be accessed from their names with "),ts=a("code"),Cn=i(".get(name)"),On=i(" or by navigating in the tree using the various "),ss=a("code"),In=i("tree_*"),An=i(" attributes available on any node."),la=h(),Ge=a("p"),Tn=i("Here are a couple of examples of manipulations:"),na=h(),x(Pe.$$.fragment),ra=h(),R=a("h3"),ne=a("a"),as=a("span"),x(xe.$$.fragment),Ln=h(),ls=a("span"),Dn=i("Objects can be translated, rotated, scaled"),oa=i(`

Here are a couple of examples:
\`\`\`
# Let's translate our floor (with the first sphere, it's child)
scene.plane_01.translate_x(1)
`),V=a("h1"),re=a("a"),ns=a("span"),x(Se.$$.fragment),Nn=h(),rs=a("span"),Mn=i("Let\u2019s scale the second sphere uniformly"),ia=h(),Qe=a("p"),Bn=i("scene.sphere_03.scale(0.1)"),ca=h(),G=a("h1"),oe=a("a"),os=a("span"),x(Ce.$$.fragment),qn=h(),is=a("span"),Un=i("Inspect the current position and scaling values"),pa=h(),Fe=a("p"),zn=i("print(scene.plane_01.position)"),ha=h(),Ke=a("blockquote"),cs=a("blockquote"),ps=a("blockquote"),hs=a("p"),Hn=i(`array([1., 0., 0.])
print(scene.sphere_03.scaling)
array([0.1, 0.1, 0.1])`),ua=h(),Q=a("h1"),ie=a("a"),us=a("span"),x(Oe.$$.fragment),Rn=h(),fs=a("span"),Vn=i("We can also translate from a vector and rotate from a quaternion or along the various axis"),fa=h(),x(Ie.$$.fragment),da=h(),We=a("p"),Gn=i("scene.show()"),ma=h(),x(Ae.$$.fragment),this.h()},l(e){const r=Ro('[data-svelte="svelte-1phssyn"]',document.head);o=l(r,"META",{name:!0,content:!0}),r.forEach(t),d=u(e),v=l(e,"H1",{class:!0});var ba=n(v);b=l(ba,"A",{id:!0,class:!0,href:!0});var Kn=n(b);y=l(Kn,"SPAN",{});var Wn=n(y);S(m.$$.fragment,Wn),Wn.forEach(t),Kn.forEach(t),k=u(ba),P=l(ba,"SPAN",{});var Yn=n(P);$=c(Yn,"Quicktour"),Yn.forEach(t),ba.forEach(t),_=u(e),E=l(e,"P",{});var ga=n(E);K=c(ga,"Simulate\u2019s API is inspired by the great "),he=l(ga,"A",{href:!0,rel:!0});var Zn=n(he);Na=c(Zn,"Kubric\u2019s API"),Zn.forEach(t),Ma=c(ga,`.
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.`),ga.forEach(t),ys=u(e),Te=l(e,"P",{});var Jn=n(Te);Ba=c(Jn,"Let\u2019s do a quick exploration together."),Jn.forEach(t),ws=u(e),Le=l(e,"P",{});var Xn=n(Le);qa=c(Xn,"We\u2019ll use the default backend which is a simple"),Xn.forEach(t),Es=u(e),W=l(e,"P",{});var _a=n(W);Ua=c(_a,"To install and contribute (from "),De=l(_a,"A",{href:!0});var er=n(De);za=c(er,"CONTRIBUTING.md"),er.forEach(t),Ha=c(_a,")"),_a.forEach(t),js=u(e),Ne=l(e,"P",{});var tr=n(Ne);Ra=c(tr,"Create a virtual env and then install the code style/quality tools as well as the code base locally"),tr.forEach(t),ks=u(e),S(ue.$$.fragment,e),$s=u(e),L=l(e,"P",{});var Ye=n(L);Va=c(Ye,"Before you merge a PR, fix the style (we use "),tt=l(Ye,"CODE",{});var sr=n(tt);Ga=c(sr,"isort"),sr.forEach(t),Qa=c(Ye," + "),st=l(Ye,"CODE",{});var ar=n(st);Fa=c(ar,"black"),ar.forEach(t),Ka=c(Ye,")"),Ye.forEach(t),Ps=u(e),S(fe.$$.fragment,e),xs=u(e),N=l(e,"H2",{class:!0});var ya=n(N);Y=l(ya,"A",{id:!0,class:!0,href:!0});var lr=n(Y);at=l(lr,"SPAN",{});var nr=n(at);S(de.$$.fragment,nr),nr.forEach(t),lr.forEach(t),Wa=u(ya),lt=l(ya,"SPAN",{});var rr=n(lt);Ya=c(rr,"Project Structure"),rr.forEach(t),ya.forEach(t),Ss=u(e),Me=l(e,"P",{});var or=n(Me);Za=c(or,"The Python API is located in src/simulate. It allows creation and loading of scenes, and sending commands to the backend."),or.forEach(t),Cs=u(e),Z=l(e,"P",{});var wa=n(Z);Ja=c(wa,"The backend, currently just Unity, is located in "),Be=l(wa,"A",{href:!0});var ir=n(Be);Xa=c(ir,"integrations/Unity"),ir.forEach(t),el=c(wa,`.
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.`),wa.forEach(t),Os=u(e),M=l(e,"H2",{class:!0});var Ea=n(M);J=l(Ea,"A",{id:!0,class:!0,href:!0});var cr=n(J);nt=l(cr,"SPAN",{});var pr=n(nt);S(me.$$.fragment,pr),pr.forEach(t),cr.forEach(t),tl=u(Ea),rt=l(Ea,"SPAN",{});var hr=n(rt);sl=c(hr,"Loading a scene from the hub or a local file"),hr.forEach(t),Ea.forEach(t),Is=u(e),T=l(e,"P",{});var ce=n(T);al=c(ce,"Loading a scene from a local file or the hub is done with "),ot=l(ce,"CODE",{});var ur=n(ot);ll=c(ur,"Scene.create_from()"),ur.forEach(t),nl=c(ce,", saving or pushing to the hub with "),it=l(ce,"CODE",{});var fr=n(it);rl=c(fr,"scene.save()"),fr.forEach(t),ol=c(ce," or "),ct=l(ce,"CODE",{});var dr=n(ct);il=c(dr,"scene.push_to_hub()"),dr.forEach(t),cl=c(ce,":"),ce.forEach(t),As=u(e),S(ve.$$.fragment,e),Ts=u(e),qe=l(e,"P",{});var mr=n(qe);pl=c(mr,"<p align=\u201Ccenter\u201D>"),mr.forEach(t),Ls=u(e),Ds=l(e,"BR",{}),Ns=u(e),be=l(e,"IMG",{src:!0,width:!0}),Ms=u(e),Bs=l(e,"BR",{}),qs=c(e,`
&lt;p>
`),B=l(e,"H2",{class:!0});var ja=n(B);X=l(ja,"A",{id:!0,class:!0,href:!0});var vr=n(X);pt=l(vr,"SPAN",{});var br=n(pt);S(ge.$$.fragment,br),br.forEach(t),vr.forEach(t),hl=u(ja),ht=l(ja,"SPAN",{});var gr=n(ht);ul=c(gr,"Creating a Scene and adding/managing Objects in the scene"),gr.forEach(t),ja.forEach(t),Us=u(e),Ue=l(e,"P",{});var _r=n(Ue);fl=c(_r,"Basic example of creating a scene with a plane and a sphere above it:"),_r.forEach(t),zs=u(e),S(_e.$$.fragment,e),Hs=u(e),ee=l(e,"P",{});var ka=n(ee);dl=c(ka,"An object (as well as the Scene) is just a node in a tree provided with optional mesh (as "),ut=l(ka,"CODE",{});var yr=n(ut);ml=c(yr,"pyvista.PolyData"),yr.forEach(t),vl=c(ka," structure) and material and/or light, camera, agents special objects."),ka.forEach(t),Rs=u(e),ze=l(e,"P",{});var wr=n(ze);bl=c(wr,"The following objects creation helpers are currently provided:"),wr.forEach(t),Vs=u(e),w=l(e,"UL",{});var j=n(w);te=l(j,"LI",{});var ds=n(te);ft=l(ds,"CODE",{});var Er=n(ft);gl=c(Er,"Object3D"),Er.forEach(t),_l=c(ds," any object with a "),dt=l(ds,"CODE",{});var jr=n(dt);yl=c(jr,"pyvista.PolyData"),jr.forEach(t),wl=c(ds," mesh and/or material"),ds.forEach(t),El=u(j),mt=l(j,"LI",{});var kr=n(mt);vt=l(kr,"CODE",{});var $r=n(vt);jl=c($r,"Plane"),$r.forEach(t),kr.forEach(t),kl=u(j),bt=l(j,"LI",{});var Pr=n(bt);gt=l(Pr,"CODE",{});var xr=n(gt);$l=c(xr,"Sphere"),xr.forEach(t),Pr.forEach(t),Pl=u(j),_t=l(j,"LI",{});var Sr=n(_t);yt=l(Sr,"CODE",{});var Cr=n(yt);xl=c(Cr,"Capsule"),Cr.forEach(t),Sr.forEach(t),Sl=u(j),wt=l(j,"LI",{});var Or=n(wt);Et=l(Or,"CODE",{});var Ir=n(Et);Cl=c(Ir,"Cylinder"),Ir.forEach(t),Or.forEach(t),Ol=u(j),jt=l(j,"LI",{});var Ar=n(jt);kt=l(Ar,"CODE",{});var Tr=n(kt);Il=c(Tr,"Box"),Tr.forEach(t),Ar.forEach(t),Al=u(j),$t=l(j,"LI",{});var Lr=n($t);Pt=l(Lr,"CODE",{});var Dr=n(Pt);Tl=c(Dr,"Cone"),Dr.forEach(t),Lr.forEach(t),Ll=u(j),xt=l(j,"LI",{});var Nr=n(xt);St=l(Nr,"CODE",{});var Mr=n(St);Dl=c(Mr,"Line"),Mr.forEach(t),Nr.forEach(t),Nl=u(j),Ct=l(j,"LI",{});var Br=n(Ct);Ot=l(Br,"CODE",{});var qr=n(Ot);Ml=c(qr,"MultipleLines"),qr.forEach(t),Br.forEach(t),Bl=u(j),It=l(j,"LI",{});var Ur=n(It);At=l(Ur,"CODE",{});var zr=n(At);ql=c(zr,"Tube"),zr.forEach(t),Ur.forEach(t),Ul=u(j),Tt=l(j,"LI",{});var Hr=n(Tt);Lt=l(Hr,"CODE",{});var Rr=n(Lt);zl=c(Rr,"Polygon"),Rr.forEach(t),Hr.forEach(t),Hl=u(j),Dt=l(j,"LI",{});var Vr=n(Dt);Nt=l(Vr,"CODE",{});var Gr=n(Nt);Rl=c(Gr,"Ring"),Gr.forEach(t),Vr.forEach(t),Vl=u(j),Mt=l(j,"LI",{});var Qr=n(Mt);Bt=l(Qr,"CODE",{});var Fr=n(Bt);Gl=c(Fr,"Text3D"),Fr.forEach(t),Qr.forEach(t),Ql=u(j),qt=l(j,"LI",{});var Kr=n(qt);Ut=l(Kr,"CODE",{});var Wr=n(Ut);Fl=c(Wr,"Triangle"),Wr.forEach(t),Kr.forEach(t),Kl=u(j),zt=l(j,"LI",{});var Yr=n(zt);Ht=l(Yr,"CODE",{});var Zr=n(Ht);Wl=c(Zr,"Rectangle"),Zr.forEach(t),Yr.forEach(t),Yl=u(j),Rt=l(j,"LI",{});var Jr=n(Rt);Vt=l(Jr,"CODE",{});var Xr=n(Vt);Zl=c(Xr,"Circle"),Xr.forEach(t),Jr.forEach(t),Jl=u(j),Gt=l(j,"LI",{});var eo=n(Gt);Qt=l(eo,"CODE",{});var to=n(Qt);Xl=c(to,"StructuredGrid"),to.forEach(t),eo.forEach(t),j.forEach(t),Gs=u(e),se=l(e,"P",{});var $a=n(se);en=c($a,"Most of these objects can be visualized by running the following "),ye=l($a,"A",{href:!0,rel:!0});var so=n(ye);tn=c(so,"example"),so.forEach(t),sn=c($a,":"),$a.forEach(t),Qs=u(e),S(we.$$.fragment,e),Fs=u(e),He=l(e,"P",{});var ao=n(He);an=c(ao,"<p align=\u201Ccenter\u201D>"),ao.forEach(t),Ks=u(e),Ws=l(e,"BR",{}),Ys=u(e),Ee=l(e,"IMG",{src:!0,width:!0}),Zs=u(e),Js=l(e,"BR",{}),Xs=c(e,`
&lt;p>
`),q=l(e,"H3",{class:!0});var Pa=n(q);ae=l(Pa,"A",{id:!0,class:!0,href:!0});var lo=n(ae);Ft=l(lo,"SPAN",{});var no=n(Ft);S(je.$$.fragment,no),no.forEach(t),lo.forEach(t),ln=u(Pa),Kt=l(Pa,"SPAN",{});var ro=n(Kt);nn=c(ro,"Objects are organized in a tree structure"),ro.forEach(t),Pa.forEach(t),ea=u(e),Re=l(e,"P",{});var oo=n(Re);rn=c(oo,"Adding/removing objects:"),oo.forEach(t),ta=u(e),D=l(e,"UL",{});var Ze=n(D);U=l(Ze,"LI",{});var Je=n(U);on=c(Je,"Using the addition ("),Wt=l(Je,"CODE",{});var io=n(Wt);cn=c(io,"+"),io.forEach(t),pn=c(Je,") operator (or alternatively the method "),Yt=l(Je,"CODE",{});var co=n(Yt);hn=c(co,".add(object)"),co.forEach(t),un=c(Je,") will add an object as a child of a previous object."),Je.forEach(t),fn=u(Ze),z=l(Ze,"LI",{});var Xe=n(z);dn=c(Xe,"Objects can be removed with the subtraction ("),Zt=l(Xe,"CODE",{});var po=n(Zt);mn=c(po,"-"),po.forEach(t),vn=c(Xe,") operator or the "),Jt=l(Xe,"CODE",{});var ho=n(Jt);bn=c(ho,".remove(object)"),ho.forEach(t),gn=c(Xe," command."),Xe.forEach(t),_n=u(Ze),ke=l(Ze,"LI",{});var xa=n(ke);yn=c(xa,"The whole scene can be cleared with "),Xt=l(xa,"CODE",{});var uo=n(Xt);wn=c(uo,".clear()"),uo.forEach(t),En=c(xa,"."),xa.forEach(t),Ze.forEach(t),sa=u(e),Ve=l(e,"P",{});var fo=n(Ve);jn=c(fo,"Accessing objects:"),fo.forEach(t),aa=u(e),le=l(e,"UL",{});var Sa=n(le);$e=l(Sa,"LI",{});var Ca=n($e);kn=c(Ca,"Objects can be directly accessed as attributes of their parents using their names (given with  "),es=l(Ca,"CODE",{});var mo=n(es);$n=c(mo,"name"),mo.forEach(t),Pn=c(Ca," attribute at creation or automatically generated from the class name + creation counter)."),Ca.forEach(t),xn=u(Sa),H=l(Sa,"LI",{});var et=n(H);Sn=c(et,"Objects can also be accessed from their names with "),ts=l(et,"CODE",{});var vo=n(ts);Cn=c(vo,".get(name)"),vo.forEach(t),On=c(et," or by navigating in the tree using the various "),ss=l(et,"CODE",{});var bo=n(ss);In=c(bo,"tree_*"),bo.forEach(t),An=c(et," attributes available on any node."),et.forEach(t),Sa.forEach(t),la=u(e),Ge=l(e,"P",{});var go=n(Ge);Tn=c(go,"Here are a couple of examples of manipulations:"),go.forEach(t),na=u(e),S(Pe.$$.fragment,e),ra=u(e),R=l(e,"H3",{class:!0});var Oa=n(R);ne=l(Oa,"A",{id:!0,class:!0,href:!0});var _o=n(ne);as=l(_o,"SPAN",{});var yo=n(as);S(xe.$$.fragment,yo),yo.forEach(t),_o.forEach(t),Ln=u(Oa),ls=l(Oa,"SPAN",{});var wo=n(ls);Dn=c(wo,"Objects can be translated, rotated, scaled"),wo.forEach(t),Oa.forEach(t),oa=c(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)
`),V=l(e,"H1",{class:!0});var Ia=n(V);re=l(Ia,"A",{id:!0,class:!0,href:!0});var Eo=n(re);ns=l(Eo,"SPAN",{});var jo=n(ns);S(Se.$$.fragment,jo),jo.forEach(t),Eo.forEach(t),Nn=u(Ia),rs=l(Ia,"SPAN",{});var ko=n(rs);Mn=c(ko,"Let\u2019s scale the second sphere uniformly"),ko.forEach(t),Ia.forEach(t),ia=u(e),Qe=l(e,"P",{});var $o=n(Qe);Bn=c($o,"scene.sphere_03.scale(0.1)"),$o.forEach(t),ca=u(e),G=l(e,"H1",{class:!0});var Aa=n(G);oe=l(Aa,"A",{id:!0,class:!0,href:!0});var Po=n(oe);os=l(Po,"SPAN",{});var xo=n(os);S(Ce.$$.fragment,xo),xo.forEach(t),Po.forEach(t),qn=u(Aa),is=l(Aa,"SPAN",{});var So=n(is);Un=c(So,"Inspect the current position and scaling values"),So.forEach(t),Aa.forEach(t),pa=u(e),Fe=l(e,"P",{});var Co=n(Fe);zn=c(Co,"print(scene.plane_01.position)"),Co.forEach(t),ha=u(e),Ke=l(e,"BLOCKQUOTE",{});var Oo=n(Ke);cs=l(Oo,"BLOCKQUOTE",{});var Io=n(cs);ps=l(Io,"BLOCKQUOTE",{});var Ao=n(ps);hs=l(Ao,"P",{});var To=n(hs);Hn=c(To,`array([1., 0., 0.])
print(scene.sphere_03.scaling)
array([0.1, 0.1, 0.1])`),To.forEach(t),Ao.forEach(t),Io.forEach(t),Oo.forEach(t),ua=u(e),Q=l(e,"H1",{class:!0});var Ta=n(Q);ie=l(Ta,"A",{id:!0,class:!0,href:!0});var Lo=n(ie);us=l(Lo,"SPAN",{});var Do=n(us);S(Oe.$$.fragment,Do),Do.forEach(t),Lo.forEach(t),Rn=u(Ta),fs=l(Ta,"SPAN",{});var No=n(fs);Vn=c(No,"We can also translate from a vector and rotate from a quaternion or along the various axis"),No.forEach(t),Ta.forEach(t),fa=u(e),S(Ie.$$.fragment,e),da=u(e),We=l(e,"P",{});var Mo=n(We);Gn=c(Mo,"scene.show()"),Mo.forEach(t),ma=u(e),S(Ae.$$.fragment,e),this.h()},h(){f(o,"name","hf:doc:metadata"),f(o,"content",JSON.stringify(li)),f(b,"id","quicktour"),f(b,"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(b,"href","#quicktour"),f(v,"class","relative group"),f(he,"href","https://github.com/google-research/kubric"),f(he,"rel","nofollow"),f(De,"href","CONTRIBUTING.md"),f(Y,"id","project-structure"),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","#project-structure"),f(N,"class","relative group"),f(Be,"href","integrations/Unity"),f(J,"id","loading-a-scene-from-the-hub-or-a-local-file"),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","#loading-a-scene-from-the-hub-or-a-local-file"),f(M,"class","relative group"),qo(be.src,Qn="https://user-images.githubusercontent.com/10695622/191554717-acba4764-a4f4-4609-834a-39ddb50b844a.png")||f(be,"src",Qn),f(be,"width","400"),f(X,"id","creating-a-scene-and-addingmanaging-objects-in-the-scene"),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","#creating-a-scene-and-addingmanaging-objects-in-the-scene"),f(B,"class","relative group"),f(ye,"href","https://github.com/huggingface/simulate/tree/main/examples/objects.py"),f(ye,"rel","nofollow"),qo(Ee.src,Fn="https://user-images.githubusercontent.com/10695622/191562825-49d4c692-a1ed-44e9-bdb9-da5f0bfb9828.png")||f(Ee,"src",Fn),f(Ee,"width","400"),f(ae,"id","objects-are-organized-in-a-tree-structure"),f(ae,"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(ae,"href","#objects-are-organized-in-a-tree-structure"),f(q,"class","relative group"),f(ne,"id","objects-can-be-translated-rotated-scaled"),f(ne,"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(ne,"href","#objects-can-be-translated-rotated-scaled"),f(R,"class","relative group"),f(re,"id","let\u2019s-scale-the-second-sphere-uniformly"),f(re,"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(re,"href","#let\u2019s-scale-the-second-sphere-uniformly"),f(V,"class","relative group"),f(oe,"id","inspect-the-current-position-and-scaling-values"),f(oe,"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(oe,"href","#inspect-the-current-position-and-scaling-values"),f(G,"class","relative group"),f(ie,"id","we-can-also-translate-from-a-vector-and-rotate-from-a-quaternion-or-along-the-various-axis"),f(ie,"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(ie,"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,r){s(document.head,o),p(e,d,r),p(e,v,r),s(v,b),s(b,y),C(m,y,null),s(v,k),s(v,P),s(P,$),p(e,_,r),p(e,E,r),s(E,K),s(E,he),s(he,Na),s(E,Ma),p(e,ys,r),p(e,Te,r),s(Te,Ba),p(e,ws,r),p(e,Le,r),s(Le,qa),p(e,Es,r),p(e,W,r),s(W,Ua),s(W,De),s(De,za),s(W,Ha),p(e,js,r),p(e,Ne,r),s(Ne,Ra),p(e,ks,r),C(ue,e,r),p(e,$s,r),p(e,L,r),s(L,Va),s(L,tt),s(tt,Ga),s(L,Qa),s(L,st),s(st,Fa),s(L,Ka),p(e,Ps,r),C(fe,e,r),p(e,xs,r),p(e,N,r),s(N,Y),s(Y,at),C(de,at,null),s(N,Wa),s(N,lt),s(lt,Ya),p(e,Ss,r),p(e,Me,r),s(Me,Za),p(e,Cs,r),p(e,Z,r),s(Z,Ja),s(Z,Be),s(Be,Xa),s(Z,el),p(e,Os,r),p(e,M,r),s(M,J),s(J,nt),C(me,nt,null),s(M,tl),s(M,rt),s(rt,sl),p(e,Is,r),p(e,T,r),s(T,al),s(T,ot),s(ot,ll),s(T,nl),s(T,it),s(it,rl),s(T,ol),s(T,ct),s(ct,il),s(T,cl),p(e,As,r),C(ve,e,r),p(e,Ts,r),p(e,qe,r),s(qe,pl),p(e,Ls,r),p(e,Ds,r),p(e,Ns,r),p(e,be,r),p(e,Ms,r),p(e,Bs,r),p(e,qs,r),p(e,B,r),s(B,X),s(X,pt),C(ge,pt,null),s(B,hl),s(B,ht),s(ht,ul),p(e,Us,r),p(e,Ue,r),s(Ue,fl),p(e,zs,r),C(_e,e,r),p(e,Hs,r),p(e,ee,r),s(ee,dl),s(ee,ut),s(ut,ml),s(ee,vl),p(e,Rs,r),p(e,ze,r),s(ze,bl),p(e,Vs,r),p(e,w,r),s(w,te),s(te,ft),s(ft,gl),s(te,_l),s(te,dt),s(dt,yl),s(te,wl),s(w,El),s(w,mt),s(mt,vt),s(vt,jl),s(w,kl),s(w,bt),s(bt,gt),s(gt,$l),s(w,Pl),s(w,_t),s(_t,yt),s(yt,xl),s(w,Sl),s(w,wt),s(wt,Et),s(Et,Cl),s(w,Ol),s(w,jt),s(jt,kt),s(kt,Il),s(w,Al),s(w,$t),s($t,Pt),s(Pt,Tl),s(w,Ll),s(w,xt),s(xt,St),s(St,Dl),s(w,Nl),s(w,Ct),s(Ct,Ot),s(Ot,Ml),s(w,Bl),s(w,It),s(It,At),s(At,ql),s(w,Ul),s(w,Tt),s(Tt,Lt),s(Lt,zl),s(w,Hl),s(w,Dt),s(Dt,Nt),s(Nt,Rl),s(w,Vl),s(w,Mt),s(Mt,Bt),s(Bt,Gl),s(w,Ql),s(w,qt),s(qt,Ut),s(Ut,Fl),s(w,Kl),s(w,zt),s(zt,Ht),s(Ht,Wl),s(w,Yl),s(w,Rt),s(Rt,Vt),s(Vt,Zl),s(w,Jl),s(w,Gt),s(Gt,Qt),s(Qt,Xl),p(e,Gs,r),p(e,se,r),s(se,en),s(se,ye),s(ye,tn),s(se,sn),p(e,Qs,r),C(we,e,r),p(e,Fs,r),p(e,He,r),s(He,an),p(e,Ks,r),p(e,Ws,r),p(e,Ys,r),p(e,Ee,r),p(e,Zs,r),p(e,Js,r),p(e,Xs,r),p(e,q,r),s(q,ae),s(ae,Ft),C(je,Ft,null),s(q,ln),s(q,Kt),s(Kt,nn),p(e,ea,r),p(e,Re,r),s(Re,rn),p(e,ta,r),p(e,D,r),s(D,U),s(U,on),s(U,Wt),s(Wt,cn),s(U,pn),s(U,Yt),s(Yt,hn),s(U,un),s(D,fn),s(D,z),s(z,dn),s(z,Zt),s(Zt,mn),s(z,vn),s(z,Jt),s(Jt,bn),s(z,gn),s(D,_n),s(D,ke),s(ke,yn),s(ke,Xt),s(Xt,wn),s(ke,En),p(e,sa,r),p(e,Ve,r),s(Ve,jn),p(e,aa,r),p(e,le,r),s(le,$e),s($e,kn),s($e,es),s(es,$n),s($e,Pn),s(le,xn),s(le,H),s(H,Sn),s(H,ts),s(ts,Cn),s(H,On),s(H,ss),s(ss,In),s(H,An),p(e,la,r),p(e,Ge,r),s(Ge,Tn),p(e,na,r),C(Pe,e,r),p(e,ra,r),p(e,R,r),s(R,ne),s(ne,as),C(xe,as,null),s(R,Ln),s(R,ls),s(ls,Dn),p(e,oa,r),p(e,V,r),s(V,re),s(re,ns),C(Se,ns,null),s(V,Nn),s(V,rs),s(rs,Mn),p(e,ia,r),p(e,Qe,r),s(Qe,Bn),p(e,ca,r),p(e,G,r),s(G,oe),s(oe,os),C(Ce,os,null),s(G,qn),s(G,is),s(is,Un),p(e,pa,r),p(e,Fe,r),s(Fe,zn),p(e,ha,r),p(e,Ke,r),s(Ke,cs),s(cs,ps),s(ps,hs),s(hs,Hn),p(e,ua,r),p(e,Q,r),s(Q,ie),s(ie,us),C(Oe,us,null),s(Q,Rn),s(Q,fs),s(fs,Vn),p(e,fa,r),C(Ie,e,r),p(e,da,r),p(e,We,r),s(We,Gn),p(e,ma,r),C(Ae,e,r),va=!0},p:vs,i(e){va||(O(m.$$.fragment,e),O(ue.$$.fragment,e),O(fe.$$.fragment,e),O(de.$$.fragment,e),O(me.$$.fragment,e),O(ve.$$.fragment,e),O(ge.$$.fragment,e),O(_e.$$.fragment,e),O(we.$$.fragment,e),O(je.$$.fragment,e),O(Pe.$$.fragment,e),O(xe.$$.fragment,e),O(Se.$$.fragment,e),O(Ce.$$.fragment,e),O(Oe.$$.fragment,e),O(Ie.$$.fragment,e),O(Ae.$$.fragment,e),va=!0)},o(e){I(m.$$.fragment,e),I(ue.$$.fragment,e),I(fe.$$.fragment,e),I(de.$$.fragment,e),I(me.$$.fragment,e),I(ve.$$.fragment,e),I(ge.$$.fragment,e),I(_e.$$.fragment,e),I(we.$$.fragment,e),I(je.$$.fragment,e),I(Pe.$$.fragment,e),I(xe.$$.fragment,e),I(Se.$$.fragment,e),I(Ce.$$.fragment,e),I(Oe.$$.fragment,e),I(Ie.$$.fragment,e),I(Ae.$$.fragment,e),va=!1},d(e){t(o),e&&t(d),e&&t(v),A(m),e&&t(_),e&&t(E),e&&t(ys),e&&t(Te),e&&t(ws),e&&t(Le),e&&t(Es),e&&t(W),e&&t(js),e&&t(Ne),e&&t(ks),A(ue,e),e&&t($s),e&&t(L),e&&t(Ps),A(fe,e),e&&t(xs),e&&t(N),A(de),e&&t(Ss),e&&t(Me),e&&t(Cs),e&&t(Z),e&&t(Os),e&&t(M),A(me),e&&t(Is),e&&t(T),e&&t(As),A(ve,e),e&&t(Ts),e&&t(qe),e&&t(Ls),e&&t(Ds),e&&t(Ns),e&&t(be),e&&t(Ms),e&&t(Bs),e&&t(qs),e&&t(B),A(ge),e&&t(Us),e&&t(Ue),e&&t(zs),A(_e,e),e&&t(Hs),e&&t(ee),e&&t(Rs),e&&t(ze),e&&t(Vs),e&&t(w),e&&t(Gs),e&&t(se),e&&t(Qs),A(we,e),e&&t(Fs),e&&t(He),e&&t(Ks),e&&t(Ws),e&&t(Ys),e&&t(Ee),e&&t(Zs),e&&t(Js),e&&t(Xs),e&&t(q),A(je),e&&t(ea),e&&t(Re),e&&t(ta),e&&t(D),e&&t(sa),e&&t(Ve),e&&t(aa),e&&t(le),e&&t(la),e&&t(Ge),e&&t(na),A(Pe,e),e&&t(ra),e&&t(R),A(xe),e&&t(oa),e&&t(V),A(Se),e&&t(ia),e&&t(Qe),e&&t(ca),e&&t(G),A(Ce),e&&t(pa),e&&t(Fe),e&&t(ha),e&&t(Ke),e&&t(ua),e&&t(Q),A(Oe),e&&t(fa),A(Ie,e),e&&t(da),e&&t(We),e&&t(ma),A(Ae,e)}}}const li={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 ni(g){return Vo(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ii extends bs{constructor(o){super();gs(this,o,ni,ai,_s,{})}}export{ii as default,li as metadata};
