March 30, 2019

MyWorld Meetup – 3/30/2019

Theme: How avatars fit into the entire ecosystem

  • Last week we talked about avatar customization; this week we’ll talk about how avatars fit into the rest of the MyWorld ecosystem.
  • MyWorld’s entity system means avatars are extremely flexible – unlike current virtual worlds, avatars in MyWorld are just another object. Anything that creators can do with general objects they can also do with avatars – and vice-versa.

General Q &A:

  • Q (Zauberin): Will creators be able to import creations from Second Life?
    • Answer: Initially probably not – we’re focused on getting an alpha & beta release out as soon as possible. However, once the CSG build pipeline is operational, importing prim data as MyWorld content should be straightforward and is something we’ll explore. However, there are a couple of big differences that mean that content coming from Second Life will need some tweaking to look its best in MyWorld:
      • MyWorld uses a modern, industry standard PBR rendering system, not a traditional stylized render pipeline like Second Life. While traditional content will render fine in a PBR environment, it will look a bit odd. This means that textures coming from any traditional-style source will need to be reworked for PBR. However, this is a common workflow now, and there are many tools to assist in this.
      • MyWorld uses a powerful scene graph system for hierarchically grouping and moving content. Since Second Life uses a flat linking system (no object hierarchies), imported linksets with moving parts should (but do not need to be) organized into a hierarchy (and doing so will usually make things much easier down the road for the creator).
  • A note about content optimization:
    • Creators often create content that isn’t optimized and uses far more system resources than necessary for what they want to accomplish. This results in long content download times and lag. We’re investigating ways to auto-optimize content.
      • With mesh, one option is to voxelize the mesh and re-mesh it using the CSG pipeline. This will not work well for animated mesh, however, and we want to avoid making special cases between animated and static mesh. Will continue to investigate options.
      • In addition to mesh optimization, we’re investigating automated texture optimization too.
  • (FordLady) With the power that MyWorld offers, many content creators will want to bring their content to MyWorld.
    • (Daniel) Mesh will come straight over without changes (except re-exporting it to gLTF format for import to MyWorld).
    • Textures will need to be changed to PBR textures to look their best in MyWorld (as noted above), but this is common and there are many tools to assist in doing this. However, even if textures are not changed to PBR, nothing catastrophic will happen – meshes won’t become glowing pink blobs or anything like that, they just won’t look as good as the PBR textured content around them.
  • Discussion about avatars in MyWorld
    • In Second Life & OpenSimulator, avatars are very different from other objects in the world.
      • This creates problems – for many years, you couldn’t animate objects that weren’t avatars.
        • Creators devised many clever workarounds to this – moving parts of a linkset via script, linking extra copies of the same part & toggling transparency to give the illusion of animation, etc.
        • The ability to use skeletal animation on generic objects only came about very recently
      • Avatar creators had problems too, since they couldn’t use anything but the built-in skeleton. Tinies and dinkies had to resort to cleverly contorting the skeleton into the right shape with animations, but if these didn’t load in time the avatars “blow up” on screen.
        • MyWorld doesn’t have these limitations – avatars are just objects in the world and aren’t “special” as far as the system is concerned. Any object can have a custom skeleton, so making non-human avatars is no different than making human avatars.
        • This is thanks in large part to MyWorld’s custom entity system
          • Fully customized, designed exclusively for MyWorld
          • Similar to industry-standard designs, with some customizations for efficiency and parallelism
          • It’s actually harder to treat avatars as special cases with a good entity system than it is to treat them as just another object.
  • Q (Zauberin): What special effects will the CSG system support?
    • Answer: One possibility that’s looking very promising is displacement mapping – taking a basic shape like a cylinder and sculpting it into something complex like a vase without having to construct more geometry around it.
      • Zauberin: “Lathing” (“spinning” a displacement around the entire object like a pottery wheel does) would be very powerful.
        • Daniel: Yes – and it will be trivial to support that in the CSG system.
  • Q (Zauberin): Will the CSG system support modifiers like Blender’s array modifier?
    • Answer: Nothing prevents this – modifiers like this can be supported multiple ways with the CSG system.
  • Q (Zauberin): Couldn’t CSG/modifier data just be stored in a very compact format, and then generate meshes on the client as soon as they’re rendered?
    • Answer: Yes, this is absolutely possible. However, this places a large computational load on the client in CSG-heavy areas – when we implement the CSG system, we need to experiment with this to determine the best route to take. On the one hand, mesh can take up a lot of network bandwidth. On the other, the computational load of generating on the client may be too high (even when done in parallel). Like many performance-sensitive designs, we need to move carefully and test alternatives before settling on one.
  • Q (Zauberin): Could the CSG implementation use OpenCL to accelerate mesh generation on the GPU (or CPU, as a fallback if GPU is not supported)?
    • Answer: OpenCL has issues – for one, there are major support issues with it in the industry. For another, it’s difficult to make OpenCL (GPU compute) play nicely with OpenGL (GPU graphics). This could cause framerate stutters & hiccups on the client as it is generating the CSG meshes.
      • GPU compute will be much more straightforward later on when MyWorld moves to a Vulkan-based renderer instead of the current OpenGL renderer. Vulkan handles both graphics & general compute in a unified and very powerful fashion.
      • It’s also not clear how well the CSG mesh generation algorithms will parallelize to GPU compute – although even if they don’t parallelize at all, GPU compute would still allow generating many meshes at a time.
      • We will investigate this when we implement CSG support as part of our performance analysis.
  • Meetups:
    • Saturday mornings (PST) are about the only time that works for us and stands a chance of working for folks in the eastern US and in Europe, but many folks have social plans for Saturday. We’re working on making some changes to better accommodate all of our users and make sure that everyone has a chance to be a part of this. Announcements will be coming soon!