Hi,
I guess Philipp has indicated most of this in his mails over the
weekend. Anyway, in a compressed form all the stuff that we discussed
last Friday:
* Meshes
There is no notion of a submesh in XML3D. In classical scene graphs a
submesh is a mesh plus a shader and the mesh shares data with other
submeshes from the same mesh. This is easy mappable to XML3D: A <group>
+ <mesh> is a submesh. All <mesh> elements have indices and point to a
common data block. Herer an exmaple from a virtual character:
<group id="male">
<group shader="#m001_body">
<mesh>
<data src="json/male/male-body-index.json"/>
<data src="#male-skinning"/>
</mesh>
</group>
<group shader="#m001_head">
<mesh>
<data src="json/male/male-head-index.json"/>
<data src="#male-skinning"/>
</mesh>
</group>
</group>
In the data block #male-skinning the animated common mesh data is
contained. The two json files contain the indices of the "submeshes".
* Mesh / Data plug-ins
As indicated, we have a plug-in system that allows to extend the
supported mesh formats. In fact, it just extends the generic data
format, because a <mesh> element is a specialized <data> element that
expects a position entry and some optional entries. Here are two
examples that extend the mesh format:
http://xml3d.github.io/xml3d-examples/examples/meshlab/meshlab.xhtml
(MeshLab JSON format)
http://xml3d.github.io/xml3d-examples/examples/openctm/openctm.xhtml
(Binary OpenCTM format)
These examples are for files that don't have any structure, i.e. only
one mesh data set. One can also register formats that are structured and
contain multiple meshes and shaders. It's a little bit more complex but
still reasonable. If you want to do that, come back to me and I'll give
you some pointers. Some information on the structure and plug-in system
can be found in [1].
* Shader plug-ins
xml3d.js allows to register own GLSL shaders. One has to deliver the
code as well as some semantics for the shader compositing. As Phillipp
mentioned, we are working on a more sophisticated solution for surface
shading. Until then, you can have a lokk at this exmaple how to register
your own shaders:
http://xml3d.github.io/xml3d-examples/examples/eyelight/eyelight.xhtml
* Physics:
We had a physics module, but that's somehow outdated. However, the
mechanism described in our paper [2][3] is still an option.
* Primitives:
As I said, we don't have predefined primitives. But one can generate
primitives from parameters using Xflow. A very basic example is here:
http://xml3d.github.io/xml3d-examples/examples/xflowWave/xflow-wave.xhtml
Here we generate a simple plane from some tessellation parameters.
Agian, we use a plug-in mechansim to register new Xflow operators:
http://xml3d.github.io/xml3d-examples/examples/xflowWave/myxflow.js
* XML3DRepos:
This is a collaboration with UCL (Jozef Dobos and Anthony Steed). Assets
are stored in a NoSQL database and we use a REST interface to query the
assets in several formats. Details can be found in the paper [4] and
here [5]. The link to the repo is here:
http://verser2.cs.ucl.ac.uk/xml3drepo/
Please be aware that this is very experimental and the server and
database runs on an old desktop PC at UCL. Also, not all assets are in
the newest DB format and thus not all examples will run. In order to
prevent any misunderstandings, please pass this link only internally.
We uploaded the Oulu city model. It'snot perfect yet, one has to play
with the Blender COLLADA exporter options a little and see what really
ends up being in COLLADA. But it's good enough to get a first impression:
http://verser2.cs.ucl.ac.uk/xml3drepo/oulu3dlive/?meshformat=json
* Texture compression:
We don't support this in xml3d.js yet. Wouldn't be too hard to add it.
But one should be aware that there are also disadvantages using S3TC:
- Need a fallback mechanism, if S3TC is not supported. S3TC is not
an official extension of WebGL, mainly because it's not loyalty free.
However, the support is not too bad (~90%). I expect that the support
particular on mobile devices that come with their own TC formats (iOS:
PVRT, Android: ETC2) is bad. Fallback would be to decompress the
compressed texture in JS. In a RESTful environment, one could request
only supported texture formats.
- 4bpp is quite large compared to good old JPG and huge compared to
JPEG2000 or WebP. Again it depends on what's the bottleneck that the
user experience suffers from most: Delivery time, rendering time (or
even crashes )because GPU memory limits exceed...
- If one wants to process the texture on CPU using Xflow, it's
necessary to decompress the image data.
However TC is an important topic and it would be great to have a generic
support for different TC formats. Also ASTC is already in the starting
blocks!
Best regards,
Kristian
[1]
https://graphics.cg.uni-saarland.de/2013/xml3djs-architecture-of-a-polyfill-implementation-of-xml3d/
[2] https://graphics.cg.uni-saarland.de/2011/sonsvriphys2011/
[3] https://dl.dropboxusercontent.com/u/2483732/papers/xml3d-physics.pdf
[4] https://graphics.cg.uni-saarland.de/2013/xml3drepo/
[5]
http://3drepo.org/portfolio/xml3drepo-a-rest-api-for-version-controlled-3d-assets-on-the-web/
--
_______________________________________________________________________________
Kristian Sons
Deutsches Forschungszentrum für Künstliche Intelligenz GmbH, DFKI
Agenten und Simulierte Realität
Campus, Geb. D 3 2, Raum 0.77
66123 Saarbrücken, Germany
Phone: +49 681 85775-3833
Phone: +49 681 302-3833
Fax: +49 681 85775--2235
kristian.sons at dfki.de
http://www.xml3d.org
Geschäftsführung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster (Vorsitzender)
Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
_______________________________________________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.fiware.org/private/fiware-miwi/attachments/20130909/cc7bd351/attachment.html>
You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy Cookies policy