29 March 2019

Zomtober 2015 Week 4- Cleaning Up?

   Well, well, well, here we are, at the fourth and final week of Zomtober 2015, or Zomtober IV,
whichever way you are counting. It feels a little wierd having more than a week of Octoober left and putting up my final post for Zomtober, but that's the way the schedule worked out this year. More zombies might still happen as a matter of principle, but I guess I should take advantage of the opportunity to finish some other things that are due for all these commissios and contests I got myself into ::lol::. I need to plan better next year. Anyways, here they are, my last two official zombies for this Zomtober- well, the last two I can show you right now. I give you my word my zombie Hare Krishna is also done, but we don't want you to know which one belongs to whom until after the voting, so I'm not showing you right now. But for the record, that makes my personal official Zomtober total 9- two per week, plus a Hare Krishna. Oh, and one of those was on a 50mm base, to boot.


So here's candidate #1 today- the last of the Malifaux Mindless Zombies. I had to finish the set, after all. This guy must have almost escaped from somewhere, because he's all wrapped up in barbed wire, and is still holding one of the fence posts, while the other is impaled right through him. In retrospect, I should have used a bolder color scheme on this one, as the colors kinda blended together. I mean, using shiny new silver barbed wire wrapped around gray pants? What was I thinking? It barely shows up. Oh, well, no one's perfect. It's a cool character, anyhow. Next week, I'll ut them all together in their official Zombie of the Month article, so I don't skip a month, or leave the last week of October free of zombie writing.


Candidate #2 is a real mess if I ever saw one. I'm not kidding- look away and do not read on if you're squeamish. This model is actually "Jinx" from the Hell Dorado line, which has some really cool  models in it. This poor fella never had a chance. Zombie baby is about the ugliest you can get, and I'm not even sure this was even truly a baby yet when the plague hit- yup, he's still got his umbilical cord. Aw, man, gross. He even has boils that I chose to color dark like buboes, because what could be worse that a zombie plague? A zombie Black Plague, of course! Anyways, I figured this guy clawed his way out of poor mom, either after she was a zombie, or maybe he would have been stillborn, except for that zombie...plague...thing...ew. Anyways, I figured, zombified placenta matter = nasty dark gooey colors. Yeah, I just said a whole bunch of words and phrases that should never be said, but hey, I warned you. Now there's a Zomtober finisher.


Well, there you have it. Another Zomtober, another dozen points off the painting board, and more citizens for good Zombalia to take part in next year's Zompacalypse. Stay tuned for this years Zompacalypse, coming soon! And get ready to vote in our zombie Hare Krishna contest! This is Empress Ali, signing off... for now (dun dun duhhhhhh.)


शिक्षण अभिवृत्ति एवं शिक्षण अभिरुचि प्रश्नोत्तरी -29

Teaching Aptitude and Learning Aptitude Quiz प्रश्न :- शिक्षक को अपनी विषय-वस्तु में निरन्तर नये ज्ञान का समावेश करते रहना चाहिए जिससे ? (A) छात्र कक्षा में शान्त रह सकें  (B) वह छात्रों को...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2U5xaTU
via Gyan Darpan

जीव विज्ञान प्रश्नोत्तर Biology Quiz-36

 Biology Quiz प्रश्न :- सर्वग्राही कौन से रुधिर वर्ग का होता है ? (A) A  (B) B  (C) AB  (D) O Ans:- (C) AB प्रश्न :- निम्नलिखित में से किस एक जीव में पसलियों की संख्या सबसे...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2HZFyx1
via Gyan Darpan

राजनीति विज्ञान प्रश्नोत्तर Political GK Quiz-54

Political GK Quiz प्रश्न :- भारत में पंचवर्षीय योजना बनाने की जिम्मेदारी किसकी है ? (A) योजना आयोग  (B) प्रधानमंत्री कार्यालय  (C) राज्य सरकार  (D) इनमें से कोई नहीं Ans:- (A)...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2NG5IWn
via Gyan Darpan

राजनीति विज्ञान प्रश्नोत्तर Political GK Quiz-57

Political GK Quiz प्रश्न :- कैबिनेट मिशन योजना के विषय में कौन-सा सही नहीं है ? (A) प्रान्तीय समूहीकरण  (B) संविधान निर्माण का अधिकार  (C) पाकिस्तान की स्वीकृति  (D) भारतीय...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2FE83gI
via Gyan Darpan

राजनीति विज्ञान प्रश्नोत्तर Political GK Quiz-55

Political GK Quiz प्रश्न :- राज्यसभा के लिए नामित प्रथम फिल्म अभिनेत्री कौन थी ? (A) नरगिस दत्त  (B) वैजयंतीमाला  (C) हेमा मालिनी  (D) जयललिता Ans:- (A) नरगिस दत्त प्रश्न :-...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2UZmv9r
via Gyan Darpan

PAC-MAN DX (Understanding Games #1)

This is the first in a series of articles describing my 2016 "Game Camp for Grownups" for introducing the medium of video games to colleagues in the humanities at Williams College.



"PAC-MAN Championship Edition DX+" (2010)
Directed by T. Iguchi, T. Iura, and R. Yabuchi
Developed by Mine Loader Software
Published by Namco Bandai for Xbox, Playstation, Windows, iOS, and Android

Widely considered a perfectly-designed game, "PAC-MAN DX" reinvents the maze-traversal legacy of PAC-MAN titles with modern advances for a gentle learning curve that still rewards hardcore play. The occasional tedium and frustration of the original are gone, and the graphics and audio have been updated to modern standards while retaining the cheer and minimalism that defined classic arcade style.

Play one of the versions of the game that uses a controller, not the iOS version with the touch screen controls. I presented the game on Windows using Xbox 360 controllers. (iOS with an external controller is fine if it supports one, but iOS controllers are rare.)


PAC-MAN Championship Edition DX+ Gameplay

Advances since PAC-MAN

The original PAC-MAN could be played at two levels of sophistication. Casual players enjoyed just moving around the maze eating dots, and rarely progressed beyond the opening stage. They were playing a "twitch" game. Hardcore players understood that it was fundamentally a strategy game about choosing paths and exploiting the ghost movement algorithms. That is, PAC-MAN is a traversal game at heart.

The original game lacked a bridge between the casual and hardcore styles of play. Thus, the really interesting part of the game was inaccessible to most players. "PAC-MAN DX" uses a series of mechanics to correct this. After the first few runs, you'll find yourself operating primarily on a strategic basis. There is still a long path of building expertise to enjoy, with the top players able to score about 2000x as high as an average experienced player. Consider which mechanics deemphasize twitch and make strategy accessible, even while preserving the sensation of speed and reaction.

The original PAC-MAN

Gaming Literacy

PAC-MAN and the other games early in our series stand alone as great titles. However, we're also using them to build literacy with gaming interfaces and terms. For example, "PAC-MAN DX" will teach you how to operate menus, steer a character using a controller, track your character on screen, and react quickly with these new controls. Those are essential skills before we before tackle the multiplayer game Monaco. In our other first few games, you'll learn or conventions including:
  • Floating colored letters = button or key to press
  • RT = right trigger
  • The B button is almost always "cancel or go back" and the A button means "accept"
  • The play area is fenced with invisible walls
  • Right stick = turn, left stick = walk
  • Many games have multiple features that must be unlocked by completing challenges
  • The player is intended to pillage crates and vases, even in friendly character's houses
  • The triggers for game events are often misrepresented by prompts. E.g., if prompted, "escape before the house burns down", the house's collapse will probably be triggered by running out the door, not by a timer. In many games, you can't actually hold of the attacking mob--they will be replenished infinitely and you are intended to run from them.

Post-Game Exercises

We played the game on a large TV by taking turns and I loosely guided discussion among the resting players to hit the following points. Were I teaching a regular course, I would run that discussion in class and assign some parts as homework.

Mechanics

Games are composed of state, rules, and choices embedded in the rules. These are more obvious in board games. State is everything you'd have to write down if you had to stop in the middle of play, put the game away, and then resume the following day. Note that not every part of what is on the table is actually relevant game state. For example, the facing direction of a chess knight is irrelevant.

Rules are the instructions for what choices players can make, and how the state is affected by those choices. In a board game, these are printed out. For a video game, these are embedded in the program's source code, and are extremely complex compared to board games.

Strategy is a player's long-term plan for most or all choices in a game. Tactics are short sequences of choices, often in response to specific patterns of state. These are not an explicit part of the game. They emerge when players engage the game with goals in mind.

Respond to the following questions and challenges.  It may help to think of "PAC-MAN DX" as a board game with turns that are only 1/30-second long and run on a timer.
  1. Enumerate the game state in "PAC-MAN DX." For example, the horizontal and vertical positions of PAC-MAN in pixels, the score, the position of each pellet...
  2. What are the choices in "PAC-MAN DX"? "Do nothing" is certainly one choice.
  3. Describe the rules for:
    1. Moving PAC-MAN. Tip: the player does not have direct control of the character!
    2. Eating ghosts
    3. Making dots appear
    4. Making fruit appear
    5. Ghost movement
    6. Points and game speed

Critique

One of many alternative graphics themes
An academic critique is not a review. The reader wants to understand the work and its relation to culture largely objectively, not primarily know your personal opinion or know if they should buy the game.

A critique always begins by concretely and quantitatively describing the work, then moving towards interpretation, and finally and closing with supported arguments around qualitative elements. For example, a film critique focused on cinematography might include statements such as:
Quantitative: the closing shot is a 16:9 shot of a sunset, with the red sun at the center framed by palm tree silhouettes on the outer thirds
Interpretation: the camera is fixed while the sun falls straight down, creating a vertical movement that contrasts the horizontal waves and leaves
Qualitative argument: this echoes the opening shot of a sunrise and tells us that the story is ending...it also indicates the off-screen death of the protagonist, whereas a sunrise might indicate a rescue
Each medium/genre/form (which I'll collectively call "medium" for short) provides a set of conventions and techniques for communicating to the audience. Media are just that--sets of techniques, not rigid categories. I think of them as marks on a spectrum instead of boxes.

Any given work might leverage elements of multiple media. For example, Firefly was an episodic science fiction TV show. But it also leveraged the narrative structures of classic Western films, season-long arcs in the style of a miniseries, pop-culture characters and dialogue, and conventions of role playing games. It was Stagecoach meets Star Trek: The Next Generation meets Buffy the Vampire Slayer meets Dungeons and Dragons. Based on interviews with the director and writers, this was an intentional construction.

PAC-MAN using Dig-Dug graphics
When evaluating a work, it is important to choose the appropriate tools for the medium in critique. You'd evaluate a novel based partly on plot and characters, but a painting based on composition and line.  One advantage of starting with "PAC-MAN DX" is that it has essentially no characters or story. It thus foregrounds mechanics and helps us avoid the temptation to over-apply tools from film analysis to game critique. 

Many elements are shared across multiple media, but they cary different weight in each case. A critique should correspondingly emphasize the most structurally-important elements for a medium. For example, one could broadly rank the significance of elements of video games vs. (live action feature-) film media as:
Games: Mechanics > Set > Visuals > Characters > Music + SFX > Plot > Dialogue
Films:  Visuals > Music + SFX > Dialogue > Plot > Characters > Set
Respond to the following:
  1. Present and support your own ranking for the significance of film elements. I think visuals are objectively the most important, but there are many arguments for what should appear after that.
  2. Enumerate and rank the elements of critique for these media: 
    • Novels
    • Poetry
    • Feature film animation
    • Documentary
    • Classic broadcast episodic television
    • Streaming "television" (e.g., Netflix and Amazon shows)
    • Architecture
    • Dance
    • Plays
    • Musicals
    • Opera
  3. Make some one-sentence moderately interesting observations about the game without further discussion. For example,
    1. the ghosts holding the power-pellets carry the only weapon that can defeat them  
    2. slowing the game speed when PAC-MAN is about to be eaten removes much of the twitch and stress while emphasizing player heroism 
    3. since the music and visuals can be switched to those of other games such as Dig-Dug, obviously it is the mechanics that fundamentally define PAC-MAN vs. another game
    4. PAC-MAN DX borrows many mechanics from its predecessors and other series, but the original was one of the few truly original games, along with Pong, Tetris, and Space War [see the family tree in Koster]
  4. You've already begun a critique by objectively describing many of the mechanics of "PAC-MAN DX." In about five minutes of oral presentation or two pages of writing, interpret the effect of some of those and then build a more subjective conclusion. For example:
    1. the sparks make the control scheme of moving the joystick before a turn clear, thus making fast play more accessible because the large time window for input is evident
    2. the PAC-MAN series enjoys pop-culture standing as the icon of video games [Newswire 2011] and a mythological position as a game independent of a target-market, despite the narrow demographic of top players. PAC-MAN DX exploits this reputation to engage players and then actually delivers the promise for the first time in the history of the series through accessible play and player-selected graphics and audio.

Recommended Reading

Koster, A Theory of Fun for Game Design, O'Reilly, 2013
See also the short presentation version PDF, and Koster's reflections PDF

You can read this book in about 90 minutes---it is more a set of comics and zen koans than a traditional text. Koster is a well-respected game writer who designed many large industry games.

As he notes in his reflections talk, he wrote this highly-acclaimed book in part because his game designs were not highly acclaimed. He wanted to get at what was going wrong with the large-scale titles and articulate the conventional wisdom of good designers which has largely been undocumented outside of the field.


Next in this series: Understanding Games #2: Monaco


Morgan McGuire (@morgan3d) is a professor at Williams College, a researcher at NVIDIA, and a professional game developer. His most recent games are Project Rocket Golfing for iOS and the Skylanders series for consoles. He is the author of the Graphics Codex, an essential reference for computer graphics now available in iOS and Web Editions.

भूगोल प्रश्नोत्तर Geography Quiz-50

geography Quiz प्रश्न :- निम्नलिखित में से कौन-सा राज्य पहले नेफा के नाम से जाना जाता था ? (A) नागालैंड  (B) असम  (C) अरुणाचल प्रदेश  (D) मणिपुर Ans:- (C) अरुणाचल प्रदेश प्रश्न...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2uza8Wg
via Gyan Darpan

भूगोल प्रश्नोत्तर Geography Quiz-49

geography Quiz प्रश्न :- निम्नलिखित में से किसे भारत का मैनचेस्टर कहा जाता है ? (A) मुम्बई  (B) अहमदाबाद  (C) कानपुर  (D) कोयम्बटूर Ans:- (B) अहमदाबाद प्रश्न :- भारत की सिलिकॉन...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2WqNawc
via Gyan Darpan

रसायन विज्ञान प्रश्नोत्तर Chemistry Quiz -44

प्रश्न :- विद्युत बल्ब का तन्तु किसका बना होता है ? (A) लोहा  (B) टंगस्टन  (C) प्लेटिनम  (D) इनमें से कोई नहीं Ans:- (B) टंगस्टन प्रश्न :- ग्लोबल वार्मिंग के लिए उत्तरदायी गैस...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2HMMRZk
via Gyan Darpan

रसायन विज्ञान प्रश्नोत्तर Chemistry Quiz -43

प्रश्न :- सीसा का निष्कर्षण मुख्यतः किस अयस्क से किया जाता है ? (A) गैलना  (B) हेमेटाइट  (C) सिनेबार  (D) ये सभी Ans:- (A) गैलना प्रश्न :- वाहनों से उत्सर्जित धुएँ में किसकी...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2HNrJlZ
via Gyan Darpan

28 March 2019

भूगोल प्रश्नोत्तर Geography Quiz-29

geography Quiz प्रश्न :- वह काल्पनिक रेखा जो पृथ्वी को दो भागों में बाँटती है, क्या कहलाती है ? (A) भूमध्य रेखा  (B) मकर रेखा  (C) कर्क रेखा  (D) इनमें से कोई नहीं Ans:- (A)...

For more Visit our site https://ift.tt/2Xdqb9l

from Gyan Darpan : Learning Portal https://ift.tt/2FyxbWg
via Gyan Darpan

Excitebike: Track 4 - New World Record

After many resets I've managed to top the world record for Track 4 in Excitebike... This one is very frustrating and the run is bitter-sweet. Wow, just a very frustrating track, but still not the hardest!



Next up, the hardest track in the game! Track 5 is absolutely horrific to speedrun.


NSU Map Update #2



Just Add VR: Cameras

How can a game engine retrofit virtual reality in a near seamless way onto non-VR 3D content? How should a game engine's camera controller for a VR experience combine tracked data from the real world, player motion input, and simulation data?

Mike Mara using a G3D::VRApp game with physics

Virtual reality research isn't just about rendering algorithms and tracking devices. Software engineering for new kinds of input and output is always an important challenge.

This article describes the upcoming API and scene graph design for the G3D Innovation Engine's experimental VR library, focusing on camera design.



The new design is a refinement of the original one that I published about a year ago. It is similar to how Unity's VR support works and is based on many discussions with their team and other game developers. My collaborators, my students, and I use this API regularly with HTC Vive, Oculus Rift, and Oculus DK2 VR systems.

The changes that we accumulated in the last year are based on experience creating many VR experiments and demos.

While the G3D implementation is available to everyone and this documents it, my primary goal in this article is to explain the design process for VR developers facing similar challenges in other engines.

Traditional Graphics Cameras

The camera entity in most non-virtual reality first-person games is bolted to the player character at head or chest height. The character moves according to simulation rules based on player gamepad or keyboard input, and the camera simply moves with the character. In as much as there is a "scene graph", it is simply that the player character is in world space (or temporarily parented to a vehicle or moving platform) and the camera is parented to the character.

VR Camera Challenges

Head Tracking (Real Movement)

Room-scale VR schematic from the HTC Vive manual
For virtual reality (VR) the camera scene graph is significantly more complicated. The player may be walking around a tracked volume as for Vive "nomad" or "room-scale" VR, standing in front of the machine with Oculus Rift, or seated and wearing any VR head-mounted display (HMD). In all of these cases we can consider a real-world tracked volume that the player's real-world head is relative to and obviously able to move without virtual constraints within.

What should the VR system do when the real-world movement places the camera inside of a solid virtual object? How should the rendered player avatar respond to real-world movement to prevent the rendered avatar from being decapitated by extreme real head movement?

Virtual Movement

In-game movement may be affected by flying the virtual camera or moving a character avatar. That movement may be via teleportation, gestural input creating physics system simulation, spline-based motion tracks, or controller-based input.

Default G3D virtual movement controls
The net placement of the VR camera used for rendering must be based on a combination of the virtual camera's movement, the tracked real-world movement of the head, and the offset from the head to the "eye" (per-eye display).

Although no current commercial VR system tracks the player's real-world body, the virtual body is frequently used for collision detection against the world to prevent players from breaking gameplay by stepping through virtual walls.

Does virtual movement move the head? The tracked volume? The virtual body? How do we maintain the parenting relationships between these? What

Generality Constraints

In the rare case where you are building a single application for a dedicated demonstration installation, then you can dictates the movement mechanics and VR platform for the experience. For example, teleportation and standing VR.

However, an application that must work with multiple VR platforms (the only current economically-viable strategy today) requires a flexible design that can satisfy multiple movement mechanics and VR platforms with a single scene graph. For a game engine, the VR design should ideally work even with scenes originally authored without VR support by upgrading the scene graph to support a tracked head and somehow adapting the screen-based rendering to stereo VR rendering.

A Scene Graph

Below is our current solution to a VR scene graph that works with legacy desktop scenes. After scene load, the G3D::VRApp automatically injects multiple dynamically-constructed objects into the scene graph:
  • vrTrackedVolume is an (invisible) G3D::MarkerEntity with bounds matching the tracked volume as reported by the SteamVR/OculusVR driver. It is initialized to the scene's default camera position in world space, but dropped to the nearest surface vertically downwards by a ray cast and has all roll and pitch removed.
  • vrHead is a G3D::MarkerEntity that is a simulation child of VRTrackedVolume. That is, VRHead is in the object space of vrTrackedVolume. The position of vrHead in that object space is updated each frame based on real-time tracking data from the VR driver.
  • vrEye[0] and vrEye[1] are G3D::Cameras that are simulation children of vrHead using offsets queried from the VR driver. They have projection matrices defined by the VR driver and all other parameters copied from the scene's default camera. 
  • vrController[0...n - 1] are G3D::MarkerEntitys representing the tracked non-head objects, which are the game controllers/"wands" under current VR systems. These are simulation children of vrTrackedVolume.
  • debugCamera is a G3D::Camera which is always inserted by any G3D::GApp. G3D::VRApp retains this behavior.


Motion

The default camera manipulator in G3D::GApp is a G3D::FirstPersonManipulator that interprets gamepad or mouse + keyboard input as moving the debugCamera when it is set as the G3D::GApp::activeCamera. G3D::VRApp retains this behavior, but also moves the vrTrackedVolume to move with the defaultCamera when it is active.

Prototype new controllers for HTC Vive
This means that gamepad input corresponding to virtual movement moves the physical room's reference frame relative to the virtual world. It does not move the virtual head explicitly.

The vrHead's world space position changes due to virtual movement because it is a child of the vrTrackedVolume. If you want to test for collisions, you have to do so based on a body inferred from the vrHead or the vrHead itself, not from the vrTrackedVolume that is creating the motion.

Pressing the "B" button on a game pad, middle mouse button, or touch pad on Vive teleports the vrTrackedVolume a position in front and below the current camera based on a ray cast.

This default behavior is useful for debugging and demos, and allows importing any G3D scene (or retroactively substituting VRApp for GApp as a base class for many programs). When an experience has a specific movement mechanic that is tailored to its simulation and content, that experience can replace this default manipulator with its own.

I'm debating whether the default manipulator should apply rigid body physics or ray casts to prevent the vrHead from moving through walls. My current inclination is not to because the default behavior is typically used for debugging and full control is best in that situation. However, it might be helpful to provide a built-in manipulator with this behavior that developers can easily switch to. I like the Vanishing Realms mechanic of pushing the vrTrackedVolume backwards when the player's real or virtual motion moves the vrHead inside of a virtual object, instead of the The Climb solution of disconcertingly blacking out the screen.

Rendering

The VRApp::onGraphics method automatically runs the GApp::onGraphics3D code twice every frame, temporarily switching out the active camera for vrEye[0] and then for vrEye[1]. VRApp maintains two HDR framebuffers, two GBuffers, and two post-processing pipelines to seamlessly support this behavior. G3D's shadow maps are always memoized if shadow casters and lights have not moved between frames, so shadow maps are only rendered once and then reused for both eyes automatically.

Because of this design, most G3D::GApp subclasses can be switched to G3D::VRApp subclasses and even custom rendering that wasn't intended for VR will still work. Two great examples are the CPU ray tracer and GPU ray marcher, which use radically different rendering algorithms than the default GPU rasterization deferred shading pipeline.

Limited field of view proposed by Fernandes and Feiner
When the vrTrackedVolume is in non-teleportation motion due to controller input, a post-process erases portions of the screen outside of an artificially-narrowed field of view. I adopted this effect because it almost completely eliminates motion sickness for me during camera motion in Google Earth and Climbey, in agreement with scientific results by Fernandes and Feiner.

When developing a non-VR title, it is common to design effects by letting the frame rate fall below target in prototyping and then optimize it back up when the result is visually satisfactory. For VR, that's not acceptable. The developers will get sick if the program is not always hitting the target frame rate and latency. It is also very hard to judge the quality of visuals in VR when not at full frame rate.

To ensure that the experience hits its performance goals even while in development, G3D::VRApp automatically scales rendering quality. This behavior can of course be tuned and disabled if something in the scaled algorithms is what is being developed. The scaling monitors frame duration over successive periods of ten frames and adjusts the following when frame duration is too long:
  1. Motion blur and depth of field quality and radius
  2. Bloom radius
  3. Ambient occlusion radius and quality
  4. Rendering resolution
  5. Stereo (VRApp automatically drops to monocular vision as a last resort to attempt to halve frame duration)

Virtual Virtual Reality

Despite all of the effort of making G3D::VRApp able to automatically adapt non-VR content and applications to VR, we also have to handle the reverse. A G3D::VRApp that is run on a machine without an HMD needs to emulate an HMD in order to make development easier...sometimes we don't have enough HMDs for everyone on the team, or don't want to use an HMD when debugging a non-graphics interaction or simulation issue.

It is possible to configure a "null driver" under SteamVR, but this is complicated and error prone. It (unfortunately) does not appear to be an officially supported part of SteamVR. We're currently working on a design for emulating a HMD (and tracked controllers, even when they don't exist) but it is proving surprisingly hard to implement in an elegant manner. The two obvious alternatives are emulating the entire SteamVR API or having two complete paths for every location that calls into it. 

Emulating SteamVR is tricky both because that API is constantly evolving and because SteamVR objects expect to be passed to one another's methods and support features not exposed in the public API. Duplicating all control paths is awkward because it spreads the emulation code across the entire VRApp.

An elegant solution might be to wrap SteamVR with a very similar API and then build an emulation subclass. Extra abstraction layers tend to just increase maintenance cost and lead to code bloat, but in this case it appears the most attractive solution...unless we can convince the SteamVR team to just provide native HMD and controller emulation!



Morgan McGuire (@morgan3d) is a professor of Computer Science at Williams College, visiting professor at NVIDIA Research, and a professional game developer. He is the author of the Graphics Codex, an essential reference for computer graphics now available in iOS and Web Editions.

Your Ad Here
 

blogger templates 3 columns | Make Money Online