Wow. Shapr 3D is neat! I wish I could use it. It’s so cool I might warp my process just to fit it into my plans.

In my quest to find a decent app for building 3D objects, I’m trying Shapr 3D, which is really amazing. It’s also $240 a year on the cheaper plan, so that’s a problem. But amazing.

I’m not sure if it is more powerful than Sketch 3D, but it is certainly much easier to use and far better documented. The tutorial videos are really well done and there are a lot of them.

I made a thing from one of the tutorials. The tutorial video is just a bit over 20 minutes and even with going back and watching bits a second time to pick up something I missed, I got this thing created in less than half an hour.

What I found really neat about the construction of this object was that it starts from a cube. Then you cut a hole through it, to make that hollow bit in the stand. Then you draw the outline of the top view, with the narrow neck and the hole. You extend that down and intersect it with the cube, and voila! you have the basic shape. There are lots of easy fillet and chamfer kinds of things, and much much more.

This is all well integrated with the iPad. The Apple Pencil does your editing, and your finger does moving and panning, which becomes quite natural. In essence, there are really two modes, moving and editing, but you switch between them without thinking modes, as you know that your fingers do this and your pencil does that. Really quite nice.

The actual purpose of this program, I guess, is CAD. It’s intended to create your initial design and either document it with photos from the app, or to export it for further cleanup in a “real” CAD program. It makes me want to design things. Unlike any of the programs I’ve tried so far, this one seems to work just the way my mind works, if my mind can be said to work.

Now for the bad news, and there is some.

First, there is no ability to put a texture pattern on your object in this app. When you look at our Orc, you see that he has green skin and a face and all kinds of Orc-like details. These are all “textures”, basically graphical files painted onto him. This is done, as I’ve mentioned elsewhere, with a process called UV mapping, where you identify “materials”, different sections of your object, and then provide a graphic texture to apply to that material. It’s all a bit arcane, and like most such things, you get used to it.

Shapr 3D has none of that.

And it gets worse. 3D objects are basically described in triangles (and sometimes quads, flat quadrilaterals). So a cylinder’s circular outline is really a polygon of high enough order to make the thing look round, and its top is then a bizarre series of triangles that fill the cap. The sides are narrow flat planes divided into triangles.

As you can see above, Shapr’s powerful operations make triangles as if they were free. That bracket I showed you has a zillion triangles, so many that when I imported it into Second Life via Blender, it looked just fine even after its triangles were reduced by 90%.

For our purposes, in an iPad game, triangles are probably the enemy. The iPad has very powerful graphics but let’s not go nuts here. If we built things with all these triangles, our game would likely be slow.

(Mind you, I am speculating about performance here, and that’s never a great idea. Possibly a trillion triangles would be just fine. But my best guess is that it would be better to have only a few billion.)

So for two reasons, cleaning up the triangle count, and applying textures, we’d have to pass the output of Shapr 3D through some other program, like Blender or 3DSmax or some such thing. Since those programs could do the whole job, though on the Mac rather than the iPad, it would likely make sense to just use one of those for the whole job.

This makes me sad. I really like Shapr 3D, to the point where I might not cancel my free trial and pay the $240 despite having no earthly purpose for the program.

Then there’s scaling

I really only ran across this problem with Shapr 3D but it is with us always. When we create an object in a 3D design program, we need to export it to some file structure that Codea understands. I don’t fully understand what Codea wants, but I know that the object itself needs to be in a .OBJ file, called a “Waveform .obj”, presumably because it was created by a company or product called Waveform. Most all 3D applications understand .OBJ files.

Codea also has .mtl files to define materials, and it understands various graphic files like .jpg and .png and .pdf. Those are used to manage the application of graphical “paint” to the object, mapped via the materials.

Those are for another day. Right now, there’s an issue with moving things from a 3D app like Shapr, into Codea. How big will the object be inside Codea?

Happens that after a lot of effort, I know a bit about that.

The .OBJ file is dimensionless. It doesn’t know from meters or feet or furlongs. Objects are expressed in absolute units (no, not chunky cats, just plain numbers.) Meanwhile, the 3D application typically has units, because you’re building an object that has real world dimensions.

Shapr 3D has very nice dimensioning, in millimeters, centimeters, meters, feet, or inches. So what does it put in the output if I build something ten centimeters tall, and what will that output mean to Codea? I couldn’t find a clear document anywhere to answer that, so I built some objects and imported them. I even opened the .obj files to see what they had in them. (They’re just text, so that’s nice.)

Codea’s “Craft” library works on cubes of unit dimensions, with a corner on even coordinates, so that the cube at 0,0,0 has no overlap outside the positive quadrant (well, octant, since it’s a 3D space). Experiment showed me that if the coordinate values in the .OBJ file are all zeros and ones (a unit cube), that cube will be the same size as Codea’s Craft Cubes. It’ll be 1x1x1.

Now then, what do we have to say to Shapr to get it to output a unit Cube? There’s good news there: Shapr thinks in terms of meters. A one meter cube in Shapr is exported with dimensions from zero to one (assuming it’s at the origin). And that works throughout. A 100cm cube gets coordinates from zero to one, as does a 1000mm cube. A one foot cube has coordinates from 0 to 0.3048, because one foot is 0.3048 meters.

So …

Well, I’ve learned a lot about creating 3D assets for Codea. There’s more to learn but the basics are in hand, well enough to give me confidence that we can do what we need to. I even have a bit of a sense about how long it would take to create a typical asset, in case I have to guess at a schedule or something.

I don’t yet know as much as I’d like to about putting these assets into Codea, but I’ve successfully put them into a general folder and I’m sure there’s some way to put them into my actual project.

I think the next article will be about assets, because there’s a new version of Codea out, and I’ve been learning about its asset handling, which is nicer than it was before.

See you then!