technical architecture.

Interactive

Virtual Reality with Hydra, now with Swords, Swarms, and Webcams!

by on Apr.21, 2013, under Architecture, Interactive, Oculus, Unity3D

EDIT 6: 5-12 Version:

  • Added in option for making the hydra controller forward be the look direction.
  • Added some basic swarming boxes/drones in to the scene, and a sword to play with to beat said swarm up. you’ll find options on the wall menu to enable the sword, add or remove from the swarm, and kill them all.
  • Added a webcam plane to the scene, and also one to the corner of the player camera for use as a ‘hud’ with head mounted cameras.. It might be interesting with a wide angle lens, but my webcam was pretty boring! It is neat to see the video playback ‘huge’ on the wall though. that was nicer quality than I thought it would be.
  • It can come in handy when setting yourself up with the Hydra as head tracking gig if you have an ourward facing camera on the laptop like I do.
  • Re-arranged the hand hierarchy so we can grab/move/throw things with both hands now, which should lead to scaling objects shortly.

“Dad, are you making this stuff? You gonna be wacking the things? It is fun to play with” – My 6 year old, after smacking swarmed boxes, and throwing cubes at the webcam picture of my face for 5 minutes and giggling uncontrollably.

Just updated the contents of the ZIP, same download link:  Download HERE

It’s about time to do another video soon, sorry I haven’t yet, video recording is not nearly as much fun as working on random things! 🙂

Cheers,

Dave.

EDIT5: 5-8 Version:

  • Added this ‘Hydra as positional head tracking‘ thing that everyone is talking about, there’s a button on the wall to enable it, just attach the hydra to your head somehow, then hit the button for fun and profit.
  • There’s a light saber here, It doesn’t really do anything yet, but I’m sure you can see where this must go (Especially if you can ‘dodge’ someone elses attack.. *wink*
  • You can throw the player now with the LeftButton2, not for the faint of heart, but kinda fun.
  • Did some experimenting with a large particle system, basically a a point cloud from microsoft ImageSynth, experiment failed when you can’t stop the particle system from blinking out of existence when it falls out of your camera frustrum, making it pointless to try and have a huge (in world scale) particle system, It still looks pretty RAD, as long as you keep the rough center of the system in camera, you can check it out by hitting right Shift key, then selecting Cloud from the scenes menu
  • Disabled the ‘Gaze Look’ when there is no rift attached as it doesn’t make sense in HydraOnly modes
  • fixed a case where the camera direction could end up NaN and the world goes black. (sounds ominous no?)

to_the_cloud

Download HERE

 

EDIT3: Met up with Ben Lang the other day to geek out and view all the latest community demos, He did a nice write up and video of my toys: you should read it

experiment_screen_5-8

EDIT2: I’m throwing an update out here with a bunch of new stuff, mostly aimed at making it easier to get someone up and running than explaining 40 button combinations!

  • Smoothed out the startup process of configuring the HYDRA some.
  • Integrated a UI system with the hydra hands! there are Context menu items on wrist menu, floating buttons in the world space, and menu/toolbars that are in the player space
  • the BUMPER button on the controllers is the equivalent of mouse click
  • the pointer finger on the hands is the equivalent of the mouse position
  • right now there is a shortcut on Right-3 to show/hide a radial menu with a few toys in there. (Looking down there is a button near your feet to do the same thing
  • Scale the world (bit buggy and slow, but an interesting effect to change the world scale to giant (Try throwing one of the blocks when it is the size of a house for instance..)
  • Change the color of the lines that you can draw using the Right-1
  • The RightTrigger will pick things up, you can now throw them
  • The LeftTrigger will copy objects..
  • There is a right wrist menu (eh..) If you are holding an object with the right hand, you can move your left hand over your wrist to pop up a context menu to toggle gravity on that object, delete object, or copy object
  • there is a ‘delete last 5 copied objects’ button out on one of the walls incase you copy a million things and it starts to get slow (There is no optimization in here yet, it’s just a clusterfuck of a playground’
  • There is a ‘GAZE STEERING’ thing which somewhat works, there is a button on the wall to show the colliders used for that, which will pretty much explain it better than words.. but basically, if you look ~90 degrees to the right, it will rotate your body slowly to the right.

New download link: Download HERE

Got a chance to do a little more work on my prototype, It’s shaping up to be a lot of fun to mess with. There’s still a ways to go before it ends up like that ol world building video everyone’s seen, but It’s coming along nicely!

I squashed a lot of bugs, made the base environment faster, and I found a few more fun things that I think everyone should try~!

 

SplashScreenHelp

Download HERE

first video capture! It’s come a long way since this already.

General control theme: Right hand to interact with scene, Left hand to modify how we interact.

Neat notes and changes from the previous version:

  • You can now grab objects with the [Right Trigger]
  • objects that you can drag also affect the player, so for instance, Grab one of the Blue platforms, and stand on it.. now lift up your hand.. but not tooo far! now that you’ve got floating down, use the [LeftThumbstick] to add forward. and you can also use the [RightThumbstick] to rotate.. BANG! Accidental magic carpet/hoverboard/flying effect. – We could probably do with simplifying the controls some, but this sort of happened by accident with the stuff I was making!
  • While you are moving objects, you can ‘Clone’ them with the [Left Trigger]
  • you can also ‘Toggle gravity’ on them using the [Left Button 1]
  • you can also ‘Delete’ them with the [Right Wrist Menu]
  • It’s possible to create pretty neat mousetrap type things with just the cubes/platforms and basketballs.
  • most of the scene is now grabbable/movable… try raising the roof! you can really make a good old mess here, and it’s a lot more fun than I was expecting to take apart a building. I think it’ll be even more fun when we can put the scenes together. (SOOOON)
    • some of the higher res bits you may not want to clone too many times, like the basketball hoop.. It’s not a very optimized model right now, so each copy adds a lot of draw calls.
  • You can still draw lines with the [RightButton1]
  • You can still ‘shoot’ balls with the [RightButton4]
  • You can still free move the player with the [LeftButton2]
19 Comments more...

My mashup of Unity experiments (Hydra/Oculus Rift/Spatial Graffiti)

by on Apr.17, 2013, under Interactive, Oculus, Unity, Unity3D

AKA: Things I play with instead of sleeping, after my son goes to bed.

EDIT: hey there people coming from Bruces video! check out the newer version for a nicer demo: cheers! 😀

SpatialGraffiti

Architecture – an interactive basketball arena 3d scene to wander around. Loosely based off of a project that we didn’t get paid for, so, mileage ++!
Hydra – for movement, and glory!
Line work – Spatial Graffiti, draw lines in 3d space with the hydra, It’s more fun than you’d think.
Basketball – kinda. It wasn’t too exciting, so it’s more or less removed by now.

How it works:

  • Rift, head tracking turns the player’s viewpoint, it just works? Thanks oculus!
  • Hydra, unity integration is nice, thanks!
    • Base unit:
      • Leave yourself enough room between the unit and the monitors! NO MONITOR PUNCHING ON MY WATCH!
      • I’ve found it works best if you have the controllers ‘docked’ at game start. It just saves some configuration hassle.
      • Pick up the controllers from the base station, move them to a comfortable position closer to your body, about as far away from each other as they appear in the rift view, and click the ‘Start’ buttons (The vertical button between the 1 and the 2 buttons) to take control of the hands.

[TL,DR]

  • Right Hand:
    • Thumb stick turns the player body.
    • Button 1: Points the finger, begins drawing a line in 3d space.
    • While button 1 is down, how much the trigger is depressed controls the width of the line, up to a point.
    • button 4 will launch a basketball, holding the button adds power per frame, letting go fires it off.. I know I know, throwing motions.. soon.
  • Left Hand:
    • Thumb stick moves the players body
    • Button 2: Points the finger, Inserts a ‘move’ helper near the hand
    • While button 2 is down, hold the trigger down to ‘MOVE’ the player body in 3d space. The movement isn’t 1:1, so go gentle to start.. but everyone I’ve tried it on has been moving this thing almost as fast as you can move your arm within 30 seconds, with minimal icky stomach feels.
    • The icky stomach feels is one of the main things I would like some feedback on, so I can pursue or steer differently.

[/TL,DR]

The main OVR menu scripts are in there, so if you manage to say, jump off of the world ‘by accident’ and look up at the things receding, you can hit the Right Shift key, and then Return to reset the scene.

Things I’m working on and experimenting with still

  • UI stereoficiation, NGUI draws well, but need something better than shooting a ray out for interaction. So far I don’t like the feel of the sixsense UI bits. working on some things here.
  • Networking. Multiple people in a small space drawing stuff, So far it works on lan, but who really has 2 rifts/hydras they can put in a room? I’ll figure it out!
  • Fly mode for the hydra, throttle style movement, basics started, but needs some tweaking before it’ll not make people feel strange.
  • 1:1 rotations, started, but I wanted some feedback on other stuff first!
  • Holding both bumpers will allow you to scale the player height/viewpoint up based on how close/far the ‘hands’ are from each other. nearly works, just a little too fall-thru-the-floory for my tastes to leave it enabled in this version.

I do architectural interactive/animation/work for a paycheck (haha, I know right!), so I spend a lot of time working with the fundamental problem of how to get non-game people empowered to get around in 3d space. I love toying with 3d spatial navigation systems, so being able to immerse in space with the Rift and prototype with the responsiveness of the hydra has been a lot of fun for me this week. There’s a lot more to play with here!

Most of my position/rotation stuff is made for placing items in the world, but the hydra tuscany demo covers a decent portion of the basics of that idea already. Besides, it was fun to mess with the player positions/orients, so that’s what I’m playing with so far.

So, if by chance you made it this far into my ramblings, here is the link to download the test app and give it a go!: 2013-04-18-BuckHydraLines.zip

4 Comments more...

Architecture – Revit to Max to Unity

by on Dec.01, 2011, under Architecture, Interactive, Interactive, Portfolio, Unity3D

Here is a Revit -> 3dsmax -> Unity project that we worked on earlier this year.

the videos below are captured in HD in unity directly from some premade itween paths

Exterior axo from Dave Buck on Vimeo.

Realtime HD Architecture, Captured in Unity3D from Dave Buck on Vimeo.

Basic workflow was to export out the WorkSets from Revit as individual FBX files
Import them into 3dsmax with the file link manager, usually set to combine objects by material
from there run a set of scripts that collapsed / welded / AutoSmoothed / split meshes that were too large (65k verts is a pain) cleans up the layers, replaces materials, and exports the now unity friendly layers into different FBX’s for unitys consumption

Inside unity there are a few small steps needed, done mostly with AssetPostProcessors that hook up any external lightmaps that we generated in max, replace/reconnect any materials that are in our standard material library, and attach any components that are supplied in the max user properties fields.

bake the lighting to suit, (In this case, just give us some AO and Sunlight since we needed to be able to turn around revit design changes -> working webplayer overnight with minimal user babysitting.)

this workflow allowed the building owner to ‘walk’ around the design very rapidly after it was changed.

There are a few more captures up at http://vimeo.com/vsai/videos/ for anyone interested.

3 Comments more...

Interactive OR Design

by on Jun.01, 2011, under Interactive, Interactive, Portfolio, Unity3D

I’ve been working on this tool for a while now, here’s a quick captured demo of some of the features of my hospital room design application in action.

Interactive 3D OR/ICU design tool from Dave Buck on Vimeo.

here’s a current video of my OR/ICU design project, created in unity3d, with fully configurable parametric models rigged with both IK and FK, and a tool to quickly draw out any layout of walls, windows and doors to spatially visualize the placement and reach of equipment needed in an operating room space.

Edit:

This is a full featured application, including but not nearly limited to:

  • Full file save / load for easy sharing of designs within the staff
  • Easy to navigate tab based menu for selecting models and assets to insert
  • all models will give some sort of visual feedback that they can be controlled by the user; ex: some arms will highlight in blue to notify the user that they are rotatable; some pieces will highlight in green to notify that they are movable; some in red to notify that they are control points that allow you to drag or re-position the entire hierarchy chain of the selected boom.
  • many models have custom logic built in so that they move and rotate within their engineering limits (As best as we could get them in some cases, as some manufacturers were less than forthcoming with information and model details!)
  • Customizable system to draw out and place walls, with orthographic or free line drawing, snaps, and dimensions integrated
  • multiple wall styles, to quickly change and prototype room designs with windows, peek thrus, walls, headers, and soffits
  • fully configurable ‘Hero’ equipment, developed from engineering models, with tolerances for how they can move and be configured together
  • rule sets integrated that control how these items may be modified, ex: changing a light head to a flattened light head, or adding shelves to a boom
  • this ‘Hero’ equipment is generated at run time as needed, this allows us to quickly configure the various lengths and heights needed to show the flexibility of the equipment system, and turn the tool from a demonstrative sales tool, into a full on design tool
  • helpers of various types to show range of motion, overlaps, and possible collisions
  • tools to place staff within the scene, and change to their point of view, look around and see what the end user of the room will see when the full update to their room takes place.
  • output to jpg in several sizes, depending on whether the user is trying to print, email, or target a presentation size image
  • custom user configurable animation paths
  • output to an mp4 video file of a fixed size to enable easy email and sharing of the designs with the customers, architects, and planners that are involved in the process
7 Comments more...

Interactive Lab Demo

by on Feb.10, 2010, under Architecture, csharp, Interactive, Unity3D

Here is another Architectural interactive test project. This time, a laboratory setup, a tighter interior space, set up without any real lighting (1 direct light + ambient colors + Ambient Occlusion currently) created with the goal of customizing the unity asset pipeline to be a little more friendly for architectural work.

First, the Project, roughly 6mb, clicking on the screenshot will open the project in a new window. its another quickly evolving work in progress, Warning: No consideration has been taken currently for speed on older hardware, ~100fps on an 8800GT was the target.
Screenshot

Some findings and random ramblings on arch and interactive 3d:

  • unlike with general gaming, with architecture you are in most cases going to already have a model provided in some form or another. odds are, the model is going to be pretty horrific, as arch models tend to be built for the purpose of either:
    • A: Viz… the Viz model will require a lot of cleanup in terms of material work, and stripping down a lot of the high poly fluff required for rendering.
    • B: Design Development… the DD model is normally plagued more by bad modeling conventions, no naming, poor materials, materials not fully assigned, or mangled geometry due to being stretched and squished for days on end to keep up with a design.
  • you will probably still want to break up the file by some logical layer type system, by default this will land you with a unique material for each material of each fbx file
  • a small AssetPostProcessor script that works on the OnMaterialAssign function can make the process of sharing materials across multiple FBX files much easier to handle, with the added bonus of being able to easily progressively build up a library of reusable realtime materials
 
//file: MaterialsPostProcessor.cs
//goal: Share a library of materials across different assets based on the name of material supplied in the FBX file
// Dave Buchhofer - 02.10.2010
 
using UnityEngine;
using UnityEditor;
using System.Collections;
 
public class MaterialsPostProcessor : AssetPostprocessor
{
    Material OnAssignMaterialModel (Material material, Renderer renderer)
    {
        //The path where you keep your "Standard" library of materials
        string StandardMatPath = "Assets/DMGStandardMaterials/" + material.name + ".mat";
 
        //the path where you want to keep your "temp" materials, that weren't found above
        //So you have a logical place to look for materials that need editing and tweaking for realtime work.
        string TemporaryMatPath = "Assets/Mesh/Materials/" + material.name + ".mat";
 
        //Check for it in the standard 
        if (AssetDatabase.LoadAssetAtPath(StandardMatPath, typeof(Material)))
        {
            Debug.Log("FOUND: " + StandardMatPath);
            return (Material)AssetDatabase.LoadAssetAtPath(StandardMatPath, typeof(Material));
        }
        //Else check to see if we've already built one in the temp path
        if (AssetDatabase.LoadAssetAtPath(TemporaryMatPath, typeof(Material)))
        {
            Debug.Log("FOUND temp: " + TemporaryMatPath);
            return (Material)AssetDatabase.LoadAssetAtPath(TemporaryMatPath, typeof(Material));
        }
        //Or create it?
        material.shader = Shader.Find("Diffuse");
        AssetDatabase.CreateAsset(material, TemporaryMatPath);
        Debug.Log("CREATED temp: " + TemporaryMatPath);
        return material;
    }
}

also check out the previous arch experiment a few posts down: Basketball Arena

3 Comments :, , , more...

Architectural Interactive Demo

by on Dec.12, 2009, under Architecture, Interactive, Unity3D

Here’s a current work in progress Interactive Architectural type demo of a college Basketball Arena

it hasn’t been terribly optimized yet, so it requires a fairly hefty video card to play smoothly, that said, it runs at ~150fps on my 8800GT here, but at 5fps on my parents 3 year old dell. So your mileage may vary while I experiment!

http://www.buchhofer.com/upload/files/labs/drexel/ ~5mb

screenshot

Everything has been done with ingame lighting and shaders, nothing is baked, and was meant as a test specifically for that purpose, to see how far it can be pushed before requiring Texture Baking on a fair sized scene. (With the aim to be able to quickly iterate models in earlier phases of design without having to unwrap and bake!)

To the game! There is a quality button on the lower left that toggles between various settings of Anti Aliasing, Shader Quality, Shadow Quality.. so you can tailor it to a point to your hardware.

On the upper left is a selection of preset Camera views, clicking and dragging the mouse button in the viewport anywhere will ‘look’ the camera from the preset view.

On the upper right is some fun stuff, toggles for Ambient occlusion, Bloom shaders (glow) and a couple of sliders to adjust those primary values

there is also an alternate Daylighting scheme, if you do this i suggest toggling the roof, then you can adjust the time of day with the ‘TimeOfDay’ slider, and the ambient lighting with the ambient.

the rest are just toggles to show/hide various layers of objects

3 Comments more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!