3D NFTs are not ready for the Open Metaverse
We hear plenty about closed Metaverses. Facebook is likely building one. Instagram and Snap already operate them.
By Metaverse by the way, I mean the original version defined by Neal Stephenson in Snowcrash - where users appear as avatars, interacting with virtual content on virtual real estate. Although unlike in Snowcrash, this may happen on your desktop, mobile phone, or VR/AR headset. It’s the virtual world and virtual content that are important to us.
What makes a Metaverse closed?
Let’s look at Snap’s current virtual world. To get your content (like a new face mask or 3D hotdog) into Snap, you must upload it through their proprietary marketplace or proprietary creation tool Lens Studio.
Snap may decide they don’t like your art for whatever reason and block your content. Or they might decide they just don’t like you and ban your login. No Metaverse for you.
What could an open Metaverse look like?
Imagine you want to join my open Metaverse, Spativerse (not really a thing). The ideal workflow:
Visit a Metaverse
Connect your wallet
Pick the NFT you want to use as your avatar
You can freely use any NFT you own without permission from the Metaverse. It will load whatever you own in your wallet! Freedom.
This is what I always imagined the NFT dream to be. It is how the JPG based NFTs currently work. We can always expect to look at an NFT’s metadata and find the image url under the image key, then load that image into the Metaverse.
Unfortunately, spoiler alert, this is not how many 3D voxel (VX) projects are set up. We do not have standardized access to the raw 3D assets. So we cannot load them directly from the blockchain into an open Metaverse.
Read on to see a few VX project contracts deconstructed, in our search for the VX asset.
VX NFTS TODAY
Many projects that were originally set up as 2D profile picture (PFP) collections are now looking to release VX versions of their projects. One of the original leaders in this strategy is Cyberkongz.
CYBERKONGZ
Genesis Cyberkongz (0x57a204aa1042f6e66dd7730813f4024114d74f37) were one one of the earliest projects, created on the blockchain April 16th, 2021. This inspired many of the early PFP collections. Funny enough, we can see another quite famous collection, Bored Ape Yacht Club (0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d) came later April 22nd, 2021! Inspiration? Perhaps.
After the success Cyberkongz found, we get Cyberkongz VX (0x7ea3cca10668b8346aec0bf1844a49e995527c8b) on a new contract, created August 15th, 2021.
What’s inside the metadata and contract for a Cyberkongz VX? Is our VX version directly in the NFT? Sadly, not quite.
{
"image": "https://cyberkongz.fra1.cdn.digitaloceanspaces.com/public/1/1_preview.jpg",
"external_url": "https://kongz.herokuapp.com/kong-vx/1",
"name": "CyberKong VX #1",
"attributes": [
{
"value": "Ghost",
"trait_type": "Legendary"
},
{
"trait_type": "Level",
"value": 1
},
{
"trait_type": "Status",
"value": "Unlocked"
}
],
"animation_url": "https://vxviewer.vercel.app/1",
"iframe_url": "https://vxviewer.vercel.app/1"
}
From a Cyberkongz VX metadata, we get the standard properties that come with most NFTs like name, attributes, and image. But look at this, we also get external_url, animation_url, and iframe_url! Promising, but unfortunately not the raw asset. These are links to web based app viewers.
The external_url points to a heroku web app which lets me visualize, color, and view animation of the Cyberkongz VX model.
The animation_url and iframe_url both point to the same Vercel app, which is simply a glTF web renderer. If we look at network traffic on the site, we can finally see the actual VX asset delivered, as a glTF file (well glb, the binary version of the common 3D file format glTF). It comes from https://cyberkongz.fra1.cdn.digitaloceanspaces.com/public/4919/4919.glb. More bad news, the asset is delivered from another web2 property, Digital Ocean.
This is quite disappointing from a decentralized tech perspective. WHEN the Heroku and Vercel apps eventually die, and they will, this metadata will point to dead links. Maybe the original VX project did it better?
MEEBITS
Before Cyberkongz actually released their VX Kong, Meebits (0x7bd29408f11d2bfc23c34f18275bbf23bb716bc7) were on the scene May 3rd, 2021!
Let’s look at the metadata for the very first Meebit of the collection.
{
"name": "Meebit #1",
"description": "Meebit #1",
"image": "http://meebits.larvalabs.com/meebitimages/characterimage?index\u003d1\u0026type\u003dfull\u0026imageType\u003djpg",
"attributes": [
{
"trait_type": "Type",
"value": "Human"
},
{
"trait_type": "Hair Style",
"value": "Bald"
},
{
"trait_type": "Hat",
"value": "Backwards Cap"
},
{
"trait_type": "Hat Color",
"value": "Gray"
},
{
"trait_type": "Shirt",
"value": "Skull Tee"
},
{
"trait_type": "Overshirt",
"value": "Athletic Jacket"
},
{
"trait_type": "Overshirt Color",
"value": "Red"
},
{
"trait_type": "Pants",
"value": "Cargo Pants"
},
{
"trait_type": "Pants Color",
"value": "Camo"
},
{
"trait_type": "Shoes",
"value": "Workboots"
}
]
}
Oh sadness! We get even less than our Cyberkongz VX metadata. Name, description, attributes, and image only. This first of its kind, 3D voxel based NFT, which advertises itself as Metaverse ready:
All Meebit owners can access a T-pose OBJ file that be imported into any most standard 3D modelling and animation software.
is not programmatically Metaverse ready. If I want to load this NFT into my 3D world, how do I get the 3D asset? Maybe the actual contract itself contains methods to get the asset? Nope.
It quickly becomes clear that Meebits are not made for the open Metaverse either. ‘Owner download area’ is the solution that lets Meebits owners download that OBJ file. This feels like a great web2 flow. Buy an asset, go download it from one site, and import it to another. It will work for some workflows, but will fail critically in web3.


CONCLUSION
While it seems NFTs were made to allow JPGs to be freely available and transferable, the same is not true for the 3D file that makes a VX NFT.
The 3D files (obj, gltf, fbx) that represent the VX NFT are not available through a standard contract definition like ERC-721. I need to visit some website, login, and download the file to get it. Why is this a problem?
There is no blockchain record of the 3D asset tied to your wallet address.
Do you actually own your VX if it doesn’t exist on the blockchain or decentralized storage like IPFS? What’s the point of doing any of this on the blockchain when the pointers all lead back to centralized web2 storage?
It seems the great lessons applied to JPG based NFTs were just ignored for VX.
The way Twitter is able to show a validated NFT for your profile picture will not be possible for your 3D avatar in the Metaverse, if there is no way to programmatically find the 3D asset starting from the original NFT.
If this is not fixed for future NFTs, we have a big problem on our hands for interoperability and ownership validation.