How might I implement a customization screen for in-world housing?

I’ve never worked with character or housing customization before, so I’m trying to wrap my head around how that’d work in Babylon.

The house owner should be able to customize how it looks in the world from an “editor” scene. We’ve not yet decided what level of customization we’ll implement, but at the very least we want to let them configure the materials and positions of certain objects, as well as bring in new ones (furniture).

We also need to authenticate and authorize them so they can customize their house, but no one else’s.

To give some context, I’m thinking less “Minecraft” and more “an extremely simplified Unity editor”.

What I Tried

Customization

I had a look at the Scene Recorder. Is that the recommended way to do this? I saw it works for hard-coded changes, but I don’t know if it’ll do the same for runtime ones.

More importantly, will it track new objects brough into the scene? If so, will it only work for objects “pre-registered” before building the project (i.e. our own, in-house collection), or could we let them import gLTF files externally (like Mozilla Hubs lets you, in its scene creator)?

In fact, speaking of the scene creator, are there any existing projects I could take a look at, or perhaps libraries I may use, so we don’t have to start from scratch? (There is, of course, Spoke, Hubs’ scene creator I mentioned earlier, but I was hoping for something a touch simpler. :sweat_smile:)


Edit: I found the page on .babylon files. I can see how I might create an editor that outputs a .babylon file, which I could store and reference when someone enters the house in-world.

However, this raises a concern: if all the vertex data is stored in the .babylon scene, that’s a lot of extra space used in the database. Maybe I could instead save references to the meshes and other binary data and expand them into a proper .babylon scene during loading?

Authentication

Should we place the editor scene on a separate URL—generated for every user—and authorize them that way, in Node? Or does Babylon come with a better way to do that?

Here are some links with ‘house’ configurators

3 Likes