-
1.
The Technology Behind VastPark<br />Craig Presti, CTO<br />craig@vastpark.com<br />@craigomatic<br />
-
2.
Disclaimer<br />Some experimental features will be shown…<br />
-
3.
FLEXIBLE<br />
-
4.
How VastPark works<br />IMML Host<br />(ie: WorldServer)<br />IMML Renderer<br />(ie: VastPark Player)<br />User<br />Media Storage<br />(ie: Amazon S3)<br />Authentication<br />(ie: VastId)<br />
-
5.
Technologies<br />
-
6.
Source Code<br />http://vastpark.svn.cvsdude.com/public/trunk<br />
-
7.
Specifications<br />We don’t find one that works, we create it<br />Royalty free, open specification license:http://www.vastpark.org/wiki/1/Open_specification_license<br />LIXA<br />
-
8.
Immersive Media Markup Language<br />
-
9.
SceneGraph Hierarchy<br />
-
10.
Scriptable DOM<br />IMML<br /><PrimitiveName="Prim"Position="0,0,0"Type="Box"/><br />VastScript<br />e = scene:getelement(‘Prim’)<br />e.position = vector3(1,2,3)<br />All scene elements have globally unique names within that context.<br />
-
11.
Network Enabled Elements<br />
-
12.
HTML functionality<br />Web Element<br />Spatially Presented<br />Web Element<br />Docked Flat<br />
-
13.
Video functionality<br />Video Element<br />Spatially Presented<br />Video Element<br />Docked Flat<br />
-
14.
Audio functionality<br />Spatial Audio<br />Audio Properties and Methods<br /><ul><li>Pitch
-
15.
Volume
-
16.
Streaming
-
17.
GetSpectrum
-
18.
GetSampleRate</li></li></ul><li>Texture Functionality<br />var t = ImmlElementFactory.CreateTexture();<br />t.ID = Util.GenerateUniqueID();<br />t.SetParkEngine(_ParkEngine);<br />t.Load(bytes);<br />t.WritePixels(pixels);<br />
-
19.
Drawing API<br />Line<br />Rectangle<br />Arc<br />Ellipse<br />
-
20.
Plugin Extensibility<br /><Plugin Name=“MyPlugin" Enabled="True" Source=“my.plugin"><br /> <Parameter Key=“Uri" Value=“http://example.org" /><br /></Plugin><br /><Trigger Event=“Loaded" Target=“OnLoad" /><br /><Script Name=“OnLoad" Language="Lua"><br /> function main(obj, args)<br />myplugin:dosomething()<br /> end<br /></Script><br />publicclassMyPlugin : IPluginComponent<br />{<br />publicstring Uri { get; set; }<br /> publicvoidDoSomething()<br />{<br />//do work<br />}<br />}<br />
-
21.
Plugin Framework<br />Available via nuget<br />Ships with the Player and WorldServer<br />Recommended way to write Plugins for VastPark<br />
-
22.
Portable IMML<br />Distribute a virtual world like a PDF!<br />Supports URI impersonation<br />Both single-user and multi-user scenarios are supported<br />Supports encryption<br />
-
23.
Widgets<br />A type of IMML container<br />Embeddable within other IMML contexts<br />
-
24.
Continuum<br />Continuum captures state changes<br />Binary file format<br />Supports forward and backwards playback and random seek<br />Designed to be streamed over a network<br />Supports arbitrary capture formats<br />ICodec<br />
-
25.
OpenAvatar<br />
-
26.
OpenAvatar<br />
-
27.
LIXA<br />Supports groups of bones, allowing specific animations to play on specific bone groups independently.<br />Human readable layout, making it easy to copy and paste animation sequences from one file to another.<br />
-
28.
Metaforik<br />Entertains the idea of media as a concept<br />Supports for multiple representations of that concept<br />Permissions<br />Discovery<br />
-
29.
Distributed Processing<br />Player<br />WorldServer<br /><IMML/><br /><IMML/><br />CLIENT<br />SERVER<br />Client Plugin<br />Server Plugin<br />3rd Party Service<br />
-
30.
World Deployment<br />Two primary output options:<br />Portable IMML (like a PDF)<br />IMML (like a web page)<br />Many hosting options:<br />WorldServer (multi-user, single user)<br />IIS, Apache, etc (single-user)<br />FileServer(single-user)<br />Local HDD (single-user)<br />
-
31.
TeamFlex<br />
-
32.
WebGL & HTML5<br />Being heavily promoted by Googlehttp://www.chromeexperiments.com<br />OpenGL 2.0 ES<br />HTML5 applications native in Windows 8<br />WebGLuncertainty<br />
-
33.
Resources<br />http://www.vastpark.org<br />http://theparkisvast.com<br />craig@vastpark.com<br />@craigomatic<br />
3D models, Primitive (Box, Cylinder, Cone, Sphere, Plane), Camera, Shader, Video, Effect (particles), Script, Trigger, Background, Plugins, Widgets, Anchors, Timelines, Lights
Crane demo
Piano demo, HQ demo (behaviour based capture) show codec acquisition
Two main goals: Better looking, more realistic avatars. Reusable way of generating them
Demonstration of default animation + override animation
Provides an avenue into the virtual world ecosystem with zero-barrier to entry