5 ms·
I'm making 30 VR projects in 30 days to learn
- paxcoder 10y agoWhat's holding the camera in the day 2 project?
- brink 10y agoI'm guessing the rod holding it is patched out using software.
- jesly_varghese 10y agoYea that is generally the approach, the tripods are a common artifact in 360 degree videos and photos, if is of professional quality it gets blurred or patched some other manner.
- paxcoder 10y agoI don't see the patch, do you?
- zerr 10y agoCan anyone explain what's radically different in "VR dev" compared to "3D dev" (from the graphics programmer perspective)?
- peter303 10y agoYou have to careful adding objects at the right size. Too large or too small they will feel out of place and unreal.
- avaer 10y agoYou render twice per frame: half the "screen" rendered with a camera at ([-eyeOffset, 0, 0] * cameraRot) and the other rendered with a camera at ([+eyeOffset, 0, 0] * cameraRot). The main thing is this has some surprising performance implications (such as geometry complexity being more important than shader fillrate). You also need to keep an untraditionally high frame rate without dropping frames (90 FPS on the desktop headsets), which also has significant performance/app architecture implications. It's actually not that radically different in terms of graphics; a game programmer should feel right at home. The harder part is the UX implications when you realize "controlling the camera" is no longer in your hands. That might require fundamentally rethinking how your game and/or app functions.
- jsheard 10y agoThere is one major difference in terms of graphics programming - deferred rendering doesn't work well in VR since it's incompatible with proper multisampled antialiasing, and the edge-detect and/or temporal AA methods typically used instead are too blurry when combined with the low perceived resolution of today's VR headsets. For this reason there's been a trend back towards forward rendering, with some modern twists to efficiently handle many dynamic lights like deferred does. UE4 for example: https://docs.unrealengine.com/latest/INT/Engine/Performance/ForwardRenderer https://docs.unrealengine.com/latest/INT/Engine/Performance/... | https://youtu.be/6kfMVxNSowM?t=3046 https://youtu.be/6kfMVxNSowM?t=3046
- sillysaurus3 10y agoIn the youtube video, they mention that moving lights can't cast shadows. https://youtu.be/6kfMVxNSowM?t=3276 https://youtu.be/6kfMVxNSowM?t=3276 That's a significant limitation for a modern technique. Here's the full algorithm for anyone curious: > The Forward Renderer works by culling lights and Reflection Captures to a frustum-space grid. Each pixel in the forward pass then iterates over the lights and Reflection Captures affecting it, sharing the material with them. Dynamic Shadows for Stationary Lights are computed beforehand and packed into channels of a screen-space shadow mask, leveraging the existing limit of 4 overlapping Stationary Lights.
- jsheard 10y agoThat was a limitation of the initial implementation in UE4.14, not the technique itself. They iterated on it in UE4.15: https://www.unrealengine.com/blog/unreal-engine-4-15-released https://www.unrealengine.com/blog/unreal-engine-4-15-release... > Forward renderer now supports shadowing from movable lights and light functions. > Only 4 shadow casting movable or stationary lights can overlap at any point in space, otherwise the movable lights will lose their shadows and an on-screen message will be displayed.
- sillysaurus3 10y ago
- janekm 10y agoIn this instance, nothing afaict. I looked at a few of them which are generic "here's how you make a 3D scene with a shark" type tutorials for three.js (a popular browser-based 3D engine based on webgl). The cynic in me thinks that perhaps "VR tutorial" gets more clicks these days ;)
- carlosdp 10y agoFrom the graphics programmer perspective? Nothing radically different at all. It's the same real-time rendering techniques that have existed for a while. VR is only different in design methodology really (and performance requirements, as noted in another comment). But in terms of programming, there's no huge leap between graphics programming for a flatscreen or VR game.
- blurrywh 10y agoSlightly OT: Google Trends on VR search queries: https://trends.google.com/trends/explore?q=vr,psvr,%2Fm%2F0knkq2w,Oculus,Vive https://trends.google.com/trends/explore?q=vr,psvr,%2Fm%2F0k... (interesting here is the decline after the peak) Same query again but with 'iphone' this time (to represent the mobile space and its size compared to VR): https://trends.google.com/trends/explore?q=vr,psvr,%2Fm%2F0knkq2w,Vive,iPhone https://trends.google.com/trends/explore?q=vr,psvr,%2Fm%2F0k...
- feiss 10y ago"Vive" means "lives" (verb) in spanish, so I guess that's why it shows more popular in spanish speaking countries.
- chriscollins 10y agothat peak just happens to correspond with Christmas :)
- olivierva 10y agoI do like it when people set themselves challenges like this. Clear beginning and end, finishing something in combination with iterative learning is very satisfying. A bit like a hackaton or a game jam. But this made me think, because in a way it limits yourself in what you can do with what you previously learned. The more you learn the more complex projects you can create and halfway through you can create something which doesn't fit in a day anymore; complexity pushes build time up exponentially. E.g. it needs some extra tooling for generating procedural content. So what I propose is instead of 'over the course of 30 days I will every single day finish a project', why not follow the Fibonacci sequence: I start with nothing (procrastinating), next a one day project, followed by another single day effort. Stepping up with a 2 day project -> a big 3 day project -> 5 day full blown project -> 8 day epic. And finally: a full 13 days working on a single masterpiece! (33 days in total).
- truth_sentinell 10y agoThat is a interesting approach. Thanks.
- jesly_varghese 10y agoThis is a good approach from a learning and skill improvement perspective. Thanks.
- nhebb 10y agoI like that except that when learning something it's hard to know in advance how many days it will take. Instead, you could substitute key pieces of functionality for days.
- risons 10y agoDefinitely an interesting approach.
- xiaoma 10y agoWith this scheme if you do even 15 projects, you're already into multi-year time frames and your 25th project will take 200 years. Fibonacci numbers grow quickly!
- risons 10y agoThanks for the overwhelming support guys. The entire code is also available on github at https://github.com/viewportvr/daysinvr https://github.com/viewportvr/daysinvr You can also ask me any questions, if you have any.
- regnarg 10y agoSo where you going from here? It would also be great if you could do a little write up of what you learned!
- risons 10y agoAbsolutely! Once the 30 days is over, I'll be writing about what I learned. I'm also building a product to make VR dev easier at https://viewportvr.co https://viewportvr.co
- vanattab 10y agoI would like to learn more about viewport but when you click docs it requires you to make an account first... if I have to make an account just to find out what your product does I leave and never look back.
- risons 10y agoit doesn't ask you to create account. It asks you to give your email address so that we can send you the docs :) You can also try the 360 photos demo at https://viewportvr.co/demo https://viewportvr.co/demo
- Vinaiah 10y agoSeems like a great project. Would have loved to see some more concrete projects though; maybe do a 10VR projects for 30days and have something more substantial .. A+ on effor though
- Vinaiah 10y agoSeems like a great project. Would have loved to see some more concrete projects though; maybe do a 10VR projects for 30days and have something more substantial .. A+ on effor though
- chidambarsk 10y agoThe best way to learn. I would look forward to it. I am pretty eager to set myself a goal like this.
- risons 10y agoAbsolutely. You should try it. :)
- enturn 10y agoAnother challenge is desktop streaming. I achieved it using webvr-boilerplate (threejs) and jsmpeg-vnc. I still need to do lots of tweaking but it works quite well over LAN to mobile.
- risons 10y agoshare it with us :)
- enturn 10y agoThe other projects did most of the heavy lifting. jsmpeg-vnc does the screen capture and sending the data over websocket to jsmpeg which renders it to canvas without buffering. I then took the canvas and used it as a texture in webvr-boilerplate. I needed to make sure the texture was a power of 2 and set texture.needsUpdate to true on each render update. Three.js made it easy to switch the cube out for a plane which I moved a bit closer to the camera. The command arguments I used for jsmpeg-vnc: -b 1000 -s 1024×512 -f 60 -p 9999 "desktop". jsmpeg-vnc doesn't support sound which doesn't bother me since I can use the computer speakers but I'd like to add mouse capture for when the headset is on. And here's a screenshot of it on my Moto G (2nd gen): http://imgur.com/a/uhRuN http://imgur.com/a/uhRuN