Well, we did it. It was 2AM and the HTC VIVE Trackers just went live on the HTC VIVE accessories webpage at the end of March. We had ourselves an adventure since the trackers came out in the United States before Canada, and we drove down for some Target browsing (I personally enjoy their cosmetics section haha), and of course, a trip to the states isn’t complete without Mexican food. Kial is playing around with a lot of mocap (motion capture) and I’m really just along for the ride (and usual QA, calibration sorts).
— M. Lovecraft (@VRmyofDarkness) April 3, 2017
As another note, when the HTC VIVE Trackers were released in Canada, I was pleased to see that HTC changed its stance on its ludicrous standard $65 shipping, no matter what you purchase. Last year, I ordered an extra link cable, and cable box which were very small items, and HTC insisted that $65 was the standard shipping. At the time of writing this, I believe they changed their shipping to $35 for tracker shipping in Canada.
What’s in the box?
The boxes are in line with the HTC VIVE branding with an all-black exterior, and bright blue labelling.
The tracker was nicely packaged, with the tracker to greet you upon opening the box, and the dongle and appropriate technical literature sitting below the tracker’s cardboard tray.
One thing to note right away is that the dongles are essentially “married” to their tracker and it’s probably important to not mix them up. Similar to wireless mice and keyboards, if you buy two of the same wireless keyboard, the dongle that it comes with, will not work with any other keyboard other than the one it came with. Also it’s interesting that the dongles require 18 inches of space away from the computer. I kind of wish the technical guide said why that is, but perhaps we can chalk it up to interference, or reach.
Mounting the HTC VIVE Trackers
I had begged Steve Bowler of Cloud Gate Studio to reveal his secrets in mounting their trackers, but found that a lot of devs and makers are forced to create their own mounting solutions for the time being. It’s pretty awesome that HTC decided to go with the standard 1/4″ inch screws, which are compatible with a lot of camera tripod mounts and accessories. Steve recommended that I didn’t go his custom metal route as his team ended up with bouts of metal splinters, and that he is hoping to sell their metal mounting clips in the future.
While waiting for Steve and his team to hit the market with their solution, we had to find our own.
After hunting for hours on Amazon Canada, here’s what we’ve ordered:
- Luxebell Clip Mount, 360 Degree Rotating Backpack Hat Fast Clamp Rec-mounts for Gopro Hero 4, Session, Black, Silver, Hero+ LCD, 3+, 3, 2, 1 and Sj4000, Sj5000 Cameras
- Neewer Universal Conversion Adapter (1/4 Inch 20) Mini Tripod Screw Mount Fixing GoPro Accessories to Sony Olympus and Other Action Cameras(4 Pack)
- Neewer Stainless Steel D Shaft D-ring 1/4″ Mounting Screw 0.39″/10mm Shaft for Camera Tripod Monopod or Quick Release (QR) Plate -5 Pack
- 2X Black Buckle Basic Strap Mount For Gopro Hero 3 2 Camera Camcorder
(Note that we are still waiting for some of the items as some of the products weren’t available for Amazon Prime unfortunately.)
Initially we used the clip mounts to attach to regular shoes instead, but Kial found a “better” (ugh) solution. He found some knock-off crocs from the Japanese $2 store Daiso. As much as I had to admit, the solution was great as we only needed to use one mounting screw – very simple!
The one tracker clip mount we still have is still a very high profile, so hopefully one of the other items will allow us to lower that profile, creating less jittery movement when it’s mounted onto a belt clip. We’ll update later this month once it arrives!
Hoping this gives other folks some ideas for mounting their trackers, and if you have a better solution, please share it with us, we’d love to hear from you!
In the meantime, here’s our pal Ace doing some dancing to do some troubleshooting. Best troubleshooting ever:
Troubleshooting VR crocs always looks awesome. Dancing solution. pic.twitter.com/AG0uvMisre
— M. Lovecraft (@VRmyofDarkness) April 5, 2017
Do you want to build a Sanic?
There are those who would blame digital anonymity and online handles as a major enabler of cyber bullying and harassment. This may very well be, but I feel digital personas and avatars can also be very beneficial in allowing us to express and reinvent different aspects of ourselves, as well find common ground with other users. Right now it feels like hyper-Comicon, and users can share their love of a character even if they could never cosplay as a 30 foot tall Stay Puft Marshmallow Man (actually, someone might have already tried that: cosplay is crazy).
In setting out to make my own avatar, I decided I wanted something approachable, funny, and physically impossible for me to otherwise be. I dug deep into my childhood, and realized my spirit animal is Sonic. Well, not really, but I grew up with Sonic. The character has really transformed over the years from a cool dude with a ‘tude, to a dude with a ‘tude who liked chilly dogs, to a cartoon dude who likes human women, to a meme dude who likes Shrek. I think most of us feel sympathy for Sonic: he is Ozymandias fallen, the mighty brought to ruin simply by the ravages of time (well, a few terrible games and the Internet).Despite my love of the original character, I felt like Sanic, as portrayed in hilariously bad fan art, was more fun to be in a digital metaverse. I modeled my version off of this piece of fan art, which M. Lovecraft improved upon with masterful placement of offset, asymmetric googly eyes.
3D Modeling: Gotta Go Fast Edition
The original basemesh took me around an hour or two to make. The shapes are really simple, but took a lot of soft selection editing and ironing (smoothing the verticies of the polygons to get good flow) to get something that looked cute yet derp’tilda.When modeling a character, you have to make sure that the topology (how the polygons are structured over the mesh) has organic looking loops. For example, its often best for the polygon vertices to form an even ring around the circumference of the arm. Sanic loves rings. Also, try to put more loops where the model is likely to bend or deform (like elbows and knees).
I like to keep things as low poly for as long as I can, using what C4D called a ‘hypernurbs’ object (don’t ask) to smooth put the polygons further and add more mesh detail by subdividing the mesh. They actually call this a ‘subdivision surface’ now, but I just like saying hypernurbs because it sounds like I’m doing something cool. (They’re so cool that I actually forgot to add them in the end. Whoops.)
Boning SanicAfter using C4D’s UV Wizard and body paint to slap color on the model, I grabbed a rig from one of the Unity Adam models and started deforming the joints to fit the cancerous blob that is my Sanic. I used that rig hierarchy so that everything would be compatible with the Unity Mecanim Humanoid Rig, which you need to ensure is referencing the right bones in your rig. After that I put a VRC_AvatarDescriptor component on the model from the VR Chat Developer SDK., and uploaded it from within Unity (props to the VR Chat devs for making this so easy!)
Within a few hours I was ready to paint the virtual town red! Most other users found me repulsive and definitively ‘not sonic,’ but it was super fun to run around the environments and chat with others about the importance of going fast. I set the character height to around 3.5 feet, which forced me to look up at other users (probably good for my back after spending all day on the computer) and had the unintended side effect of making lots of other characters chase me around, attempting to pick me up. Special thanks to Poplopo on VR Chat for snapping some amazing pictures of me at the Majora’s Mask Milk Bar.
Even Sanic Can’t Outrun the Past
In regards to web anonymity and bullying, the issues are extremely difficult to tackle. The VR Chat code of conduct is a great manifesto, but even Socrates (it’s under ‘so-crates) and Glaucon were talking about digital anonymity in their ancient Greek debate on the web-ring of Gyges. I have the feeling this struggle between absolute freedom and accountability will persist throughout the ages… well at least until Facebook or some hacker turns on your Oculus Constellation Sensor and spies on you.
It’ll Be Fun They Said
One of my friends sent me a link to a sketchfab contest that challenged creators to make a VR-ready model inspired by the Legend of Zelda. I’m a big fan of the series, and I have been dying for an opportunity to port one of the MANY Game of Hyrule models I made into virtual reality. The project seemed like a perfect fit…
And it many ways it was, although in practice it was also a harrowing exercise in extreme tedium and madness.
The original map was painstakingly built up using manually drawn splines, extrusions and box modeling for each of the 50+ unique objects in the set. There might be a few errors, but nearly every element on the overworld map has been recreated and placed in 3D space. While this process was laborious, it doesn’t even compare with the optimization process. Well, I say that because I built the map a year ago and the pain is mostly gone. Mostly.
I got the impression that having over 5 thousand individual models, grouped under a multitude of nulls and hiearchies would probably kill real-time performance (gotta hit that 90 fps), so I decided to merge all the geometry that shared a common texture. This way, retexturing the model would also be way easier to do in subsequent engines, as you only had to apply one material per piece of geometry.
It turned out to be a huge ordeal to combine the thousands of individual meshes as some of my models had their own hierarchy, or polygon selections that applied two different materials to one object (perish the thought). In the end I had to manually combine, change texture tags, and clean individual objects for a full day. Luckily some of the objects were instances, so I could fix up and ungroup the original model, but even still there was a mountain of mind-numbing monotony ahead.
Even getting the file size down to the Sketchfab basic (‘I haz no monies’ version) requirement of below 50mbs was a horrifying task. I found that deleting some of my textures and UVs freed up just enough space for me to get a barely passable version up on Sketchfab. N-gons (polygons with more than 4 verticies) saved space, but became digital nightmare shards in my uploads to the site, so I had to convert critical objects to tris.
But hell, I slogged through hours of optimization and tidying, and I wanted to see it in it’s full VR glory. Unity to the rescue.
Help me Unity3D, you’re my only hope
I was able to rebuild the textures from my original Game of Hyrule map intro using the incredible UBER shader by Tomasz. I was expecting a performance hit from the complex, multi-texture shaders I built, but everything worked flawlessly… so I wasn’t satisfied until I threw as much post processing/image effects onto the camera as possible. I used the godlike Volumetric Fog & Mist by Kronnect to create some atmospheric perspective and even a subtle amount of sunshafts (dare I say ‘tasteful amount’). I added filmic post-processing from Scion to the camera, and found the performance hit acceptable for how cool it made everything look. Oh yeah, and I added AO because bitches love AO.
As far as the ‘coding’ I used VRTK for teleportation and Playmaker for the player scaling. I’ve been spending so much time working on learning ‘code’ and game logic for other projects that it was a welcome excursion to just make something look good (often the only requirement in 90% of my freelance work). Coming from a VFX background, I am still shocked at the real time performance of modern game engines. 1-3 hours per frame? What is this, 2015? I’ll render in Unity, thank you (well, Unity or Octane, OR BOTH #LaterThisYear #OctaneInUnityForever).
Anyways, all the boring, mindnumbing work was worth it if you guys enjoy playing around with the map! I hope I can export some other models for you to play around in soon… I just hope someone invents some crazy, flawless texturing baking solution for C4D/Octane in the meantime.
The final product
You can download the small Zelda map experience on itch.io, or navigate to the Downloads section. In the meantime, here’s a quick look:
A World Without Limits
Congratulations! You are one of the adventurous few, daring enough to explore the infinite reaches of VR: a bold new experiential platform that some have called ‘The Final Medium.’ No other art form I have seen requires as many disparate and varied skills to pull off, but it is my hope that through this series that I can elucidate some of the more powerful tools and techniques I have found that allow you to realize (a place others into) your vision as fast as possible. Before we get virtual, however, let’s take a moment to go over our unfortunate IRL (meat space) limitations.
Scope (A World With Some Limits)
The tools and pipeline of content creation will vary greatly on what kind of project you are making, but one of the consistent challenges is reflected in the inescapable triangle of compromise:
Anything you make costs something, but not all costs are worth taking. A project can cost your good health, finances, opportunity for growth/expansion, personal relationships or your confidence in the very fabric of reality. Limiting the scope of your project early on can hopefully prevent you from sacrificing anything of value down the line. Making something is almost ALWAYS better than making nothing unless you are endangering something important in your life.
The Tools (Each Software Has Its Limits)
Most VR experiences are developed using game engines such as Unreal or Unity. Coming from a VFX background, I was shocked to learn that these programs are essentially free to use, often only requiring a small licensing fee if you make over $100,000 in annual revenue from use of the program (sounds like it won’t be a problem for me). Personally, I use Unity for 3D animated experiences, and will speak to that pipeline throughout this series.
There are a ton of Unity tutorials out there, but I like Brackeys because he sounds nice: https://youtu.be/IlKaB1etrik
As impressive as these engines are, you often have to make art assets in an external app. I love using Cinema 4D for creating 3D models, but really you can use almost anything that exports a mesh to an obj or fbx (Unity can import a staggering amount of file types). If you aren’t comfortable with 3D asset creation or simply don’t have the time, there’s a ton of great places to find models like the Unity Asset store, Turbosquid and tf3dm.com. Costs, aesthetics and usage right might vary per model, but depending on where you sit with the triangle of compromise, these cheap/free assets can be your fastest way to a product or protoype. Hell, you could steal crayons from Denny’s, draw assets on toilet paper, scan them in at the library and have 2D cut-outs placed in 3D space for characters if you wanted to. This is VR. There are no limits (#ThereAreActuallyLimits #StupidTriangleOfComprimise).
To me, VR is about interacting with a digitally generated space, so I decided that I want to focus on roomscale experiences with head and hand tracking. Rather than learn a traditional scripting language, I opted to pick up Playmaker from the Unity Asset store which is an incredibly powerful visual scripting tool based on functional state machines. Some ‘pros’ swear against using visual coding add-ons, but I find the solution fits my typical fast/good triangle considerations and $65 dollars is a steal for such a robust and fun system. Who would have thought that making games feels a lot like playing a really satisfying puzzle game? In future articles I will elaborate on how you can use Playmaker, but if you are eager to learn about the system in a game design context I highly recommend Mdot’s incredible tutorial series: “The Strange School.” Just don’t parent the VR playspace to the character motor script (or go for it, #nolimitsVR2017).
I actually wouldn’t have learned 3D modeling if it wasn’t for M dot Strange, and I definitely wouldn’t have got into Unity without him! He’s a great guy who really seeks to empower the artist in everyone (on top of being an engaging/hilarious teacher).
I develop for the HTC Vive, so I use the SteamVR package on the Unity Asset store combined with Frame Tale Studios SteamVR Playmaker Toolkit, which allows you to easily map controller inputs to your state machines. This will allow you to shoot cats out of your hands when you press the trigger. It might have other uses, but for now that’s all I can think of (#TheOnlyLimitIsImaginationAndRentMoney). Another amazing tool is the community project headed by TheStoneFox, VRTK, which is a collection of scripts and interaction systems made by developers for developers. VR is challenging enough: why try to reinvent the wheel when you can focus attention on to making that deep-sea dating simulator you’ve always dreamed of making?
The World Is Yours (Within Limits)
Obviously, there are as many tools as there are workflows and aims, but with a VR Headset and $100 USD you can get started developing VR RIGHT NOW (even cheaper if you learn C# code)! The experience of walking through the halls of your own digital creation is exhilarating, cathartic and mind blowing. Subjecting other people to the horrors of your digital Garfield and Saved by the Bell Crossover Museum: priceless. Follow along with this blog as we delve more into my ever-evolving workflow, and specific tools that help you git’er done. Just remember to design responsibly, because…
On a busy weekend, I attended the Full Indie Summit in Vancouver. I was looking forward most to Kayla’s presentation but being up working on a cosplay (yeah, I’m THAT person) until 3AM unfortunately got to me and I only got to her Q&A.
— VRMY of DARKNESS (@VRmyofDarkness) October 22, 2016
I’m really glad I got to see her Q&A because I think she touched on something that I somehow always had trouble admitting: looking forward (and yet not looking forward) to multiplayer experiences in virtual reality. I can’t help but want to share so much virtual reality with others concurrently, but at the same time, being misgendered to a lower registering vocal tone is disheartening and it makes me not want to speak to anyone in VR.
Immediately all I could think of was the (unfortunately fictional) customer service voice altering technology in Ernest Cline’s “Ready Player One”. I know the book has been relentless beaten to death by VR enthusiasts, but it did scrape the surface on things/dreams like this.
I also extremely enjoyed Kert Gartner’s presentation on mixed reality trailers because a lot of what he spoke of lingered in my mind when I did a brainstorm on how to stream virtual reality on Twitch. He mentioned that one of the trailers after the dual square headset mirror view (tragically unappealing to consumers), was Sony’s announcement trailer for Playstation VR:
Now what makes this trailer so different is that it allows viewers to “emotionally connect” because you can see someone’s eyes. I thought about this a lot when creating a VR stream – what makes streams so enjoyable? Being able to connect with the streamer? I think for the most part, that’s it. When your eyes are covered, you feel like you don’t have that connection. I thought to have multiple people commanding a VR stream but I’ve yet to figure it out. If I do, well, I’ll stream it!
Loved the nod to altgames by Claris Cyarron. I think alternative experiences (non-conventional games) is perfect content for virtual reality. Creating the abstract into something with presence is what I look forward to most! Imagine this in VR:
Steve Swink’s talk covered some elements of game and puzzle design where you create your own components of why something works and how to improve your workflow. I wish I was more conscious for his talk but it was fantastic.
To close things off, Ryan Clark gave a presentation on how to make an indie hit. It came down to analyzing trends (which he streams live on his Twitch channel), finding a niche, and proper marketing. An extremely relevant talk – and easier said than done. Ryan has been analyzing trends for over a decade so it’s interesting hearing his expertise on game trends in the last few years.
It was my first Full Indie Summit and it was pretty fun! I just wish I had some more sleep, haha. (But at least I finished my cosplay… Right?)