Search Unity

Let users create their own virtual tours

Discussion in 'Getting Started' started by mike158, Jan 28, 2019.

  1. mike158

    mike158

    Joined:
    Oct 6, 2018
    Posts:
    11
    Hey, I'm pretty new to Unity and I'm working on Virtual Tour using Oculus SDK. I want to create an application that allows users to view any virtual tour.

    So I want users to create the tour by placing objects representing the view at some point, let them specify a transition effect, put control objects into the view for transitions between views and somehow let them connect all views together. The user should be able to export the tour into some file and then view the tour by loading this file in an application.

    What would be the best approach to achieve this behaviour? My thoughts are to create 2 applications. One for viewing tours and the second one for creating tours and exporting them. I don't want to create an extension for Unity editor because I would force users to install whole Unity.

    Thanks for your replies!
     
  2. Schneider21

    Schneider21

    Joined:
    Feb 6, 2014
    Posts:
    3,512
    This is kind of a big undertaking. It sounds doable, but you'll want to be familiar with working with Unity before we can go into any meaningful detail about what you'd need to do.

    Additionally, being the Getting Started sub, this might not be the best sub for help on your advanced use app. We have lots of topic-specific forums for help with specialized parts of your app once you get there, and you'll have better luck finding people who can help you with those parts there, if that makes sense.

    As far as actually how to get started, you should definitely do the official tutorials. Once you get through the basics, like the Interface and can work with 3D objects in a scene, learn how to work with the Unity API. If you like more of a project-based approach, start with Roll-A-Ball and go from there. It doesn't matter if the subject material of a tutorial doesn't seem to be related to what exactly you want to do. If you're learning how Unity works, you're making progress towards that goal.

    Finally, when you're ready to dive into the VR portion, there are a number of XR-specific tutorials you should check out.

    Good luck!
     
  3. mike158

    mike158

    Joined:
    Oct 6, 2018
    Posts:
    11
    I've seen many VR related tutorials and I've already made "static" virtual tour. The thing is that I want anyone to be able to make their virtual tour. So I'm asking about the right approach to this. Is there any better solution than I described above? Thanks for your reply btw.
     
  4. Schneider21

    Schneider21

    Joined:
    Feb 6, 2014
    Posts:
    3,512
    There's so much about your idea and your business need I'm not aware of that I'm probably not qualified to say for sure.

    Who are your users that will create tours? Who are your consumers of those tours? Will this be something either are trained to do, or does the app need to be intuitive enough for them to use without guidance? Is it a paid app in the marketplace, or something used for public or educational purposes? Will the tours be viewed on the same computer they're being created, or do they need to be distributed over the Internet?

    I'm sure it could work either way -- as separate apps or as a unified one -- and the challenge is on how you handle it from a UI and distribution approach. I don't think either is necessarily easier, either, as both approaches have their benefits and drawbacks.

    I'm not an expert, but if you give more information, I'd be happy to offer my input for what it's worth.
     
  5. mike158

    mike158

    Joined:
    Oct 6, 2018
    Posts:
    11
    It is my master's thesis project. So it is for educational purposes in general, but anyone will be able to extend it later. The implementation and manual will be described in technical report. The tours will be created on computer and then viewed via smartphone and VR headset. I'm also thinking about some interaction via websockets, like displaying nodes (possible scenes) on a webpage and by clicking on the nodes to navigate to the coresponding view in application (imagine that X people with headset join a server and one person changes their "world" by clicking those nodes on a webpage), but it is far away.

    Hope you got my point.
     
  6. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,190
    How much time do you have to work on it?

    Because creating your own editor from scratch (which is what you would have to do to avoid the extension route) is a massive undertaking that will most likely eat up months of time on its own. If you don't have months to work with you should go the extension route.
     
    Last edited: Jan 29, 2019
  7. mike158

    mike158

    Joined:
    Oct 6, 2018
    Posts:
    11
    4 months.

    I thought it would be more complicated, but didn't realize that the difference would be so huge. Thanks
     
  8. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,440
    i worked on a similar project while ago,
    it had web based "editor", you could create tours with 360 images or videos, place hotspots or doors to next images,
    so user could jump between 360 views.. and mobile cardboard vr app to view them (by entering room # to load contents)

    vr app itself is quite simple to do,
    i mean you load 360 image, display it, and user can look around.
    then for hotspots and doors, it loads json file for the locations in sphere,
    with information that which image is loaded next if clicked here.

    web editor,
    bit more work, since you need to create editor to drag n drop things around, save and load those datas,
    and then some backend service to serve data to connected clients.. (but i mean, they just need to load some contents.json, get list of 360 images, and hotspots.. then build scene in client with that data)
     
  9. mike158

    mike158

    Joined:
    Oct 6, 2018
    Posts:
    11
    Sounds good! Thanks for sharing your experience. Those images were stored on the server side and then loaded on demand, I guess? Was the editor similar to unity scene editor? You could zoom in/out, look into the sphere, place hotspots inside, etc.? (sounds pretty complicated) How did you handle hotspots in Unity? (I mean what game objects did you use, how did you place them) And did you implement some kind of transition effect between images? Something like linear interpolation for example.

    Thanks for help!
     
  10. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,440
    editor was more like powerpoint, list of image thumbnails, could press + to add more from existing 360 images (or upload new 360 images)

    360 web editor was just a flat image. There are 360 javascript viewers, but bit too complicated for "normal people"..
    so it was simple to get UV position from the mouseclick on that equirectangular image.

    in unity the hotspots were regular gameobjects with collider, i think invisible sphere was used for regular spots,
    and with cardboard sdk you can then easily click those objects.

    so if you loaded room123.json
    it had list of 360 images, and each image had list of hotspots/doors, their info and UV coordinates,
    there were some posts online how to then get 3d vector coordinate, since you know the sphere size.
    (spherical UV to 3d position or something)
    So those were instantiated there, and some helper scripts were attached to them to run when clicked.

    transition,
    yes, added simple fading (with regular transparent shader),
    after new image was loaded on a 2nd 360 sphere, the old one faded out.
    and added basic caching also, so if you went back to previous image, it was already loaded in memory..
    just an list/array of images, too old ones were removed..
     
  11. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,190
    It's a guesstimate based on the fact that there are only very limited options to assist with the process on the store. To my knowledge the only asset with an editor was ProBuilder and it was both an incomplete prototype and very old (it's older than the repository suggests it is). I'll link it below just in case you want to use it for a starting point or as reference.

    https://github.com/Unity-Technologies/giles