Search Unity

College project, limited time, where to best start?

Discussion in 'Getting Started' started by Tawnwen, Oct 30, 2019.

  1. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    Let me get straight to the point: We have this project that we've chosen Unity for, and I'm a little concerned about whether we can learn Unity + finish our deliverables in our limited time. I'd appreciate if anyone who understands Unity could tell me where to begin learning, what tools I'll need to learn, and if our project is even feasible given our time.

    Background:
    We have 3 front-end devs. None of us have any prior Unity or graphics experience. We are computer science seniors, with ample coding knowledge (Java, no C#). We have 5 months (dedicating 5-10 hrs/week) + 1 month (20+ hrs/week) to learn Unity and complete our deliverables.

    Our project scope in a nutshell:
    • This will be a 3D process visualization web project, so we will be using WebGl to get a Unity project running in the browser
    • The User will go to a regular web page, where they are presented a list of tank models to open in a Unity interface to interact with
    • Each tank is stored as a CSV data file (as measurements)
    • When the User clicks on a listed tank, they are redirected to a Unity WebGl web "game". The data of the tank is imported into a script, generating a 3D model of that tank (including all its mixing components).
    • The tank itself is just a visual model. The User can rotate the camera to see all angles, but that's about it
    • There will be UI panels surrounding the tank. Here, the User can input/remove "liquid volumes" into the tank, causing the liquid level in the 3D tank to rise/fall
    • The User can also turn mixers and pumps on/off, and the 3D model should reflect that.
    • There should be some animation, such as mixer blades spinning, and fluid dynamic arrows pointing
    • There will be a script running that warns the User if the liquid level hits one of many "critical points mockup final.png
    So, does anyone have any advice on how to learn in the most efficient way possible? Which areas should we start in/dedicate most time to? Any tutorials you recommend? Is our project a lost cause? Reminder that we're so new to Unity that we don't even know what we need to learn... let alone which approach is the most efficient!
     
  2. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Not sure if Unity will be the best solution for this project, have you considered Mathworks Simulink?
     
  3. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    @JeffDUnity3D

    Hm, I have not, nor do I know about the program. What benefits would it offer in place of Unity?

    Without going into detail, while we'd prefer to stick with Unity, we're open to alternatives if they'd make more sense.
     
  4. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
  5. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,770
    While simulink is nice for simulation, I don't think OP has time to learn all mathworks important elements. Also math or will require license. They would need check, if they have it already.
    Plus I don't thin they need go that far. Looks like basics process control and automation layout.

    What I would recommend, is build simple HTML5 based app, without even touching Unity. If you got already some experience in front end, that maybe quickest route.

    Does it have to be Unity? 5-20 hrs a week,for 6,months (not even full) is not much. You maybe would do it, if simplifying project. Chances are, some of you are already familiar with web tech.

    Should look also into SCADA systems. Designated for process control and automation. Checkout LabView. But may not be suitable however, since you need web interface. Just something as reference and often available in academia environment.
     
    Joe-Censored likes this.
  6. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    @JeffDUnity3D

    I can appreciate the modeling capabilities of Simulink. However, Antypodish's intuition is correct in that this is not a calculations-heavy system. Less data modeling, and more interactive planning and visualization of the inside of the tank. But thanks for the recommendation!

    @Antypodish

    See above. Yep, process control of a mixing process. As far as industry-level process supervision goes, not delicate or multi-layered at all.

    I've been considering suggesting a simpler HTML5-based 2D approach rather than a Unity 3D approach. To answer your question, our sponsors are open to a pretty 3D model being a stretch goal. However, they've emphasized making sure the user can really "visualize" what is going on inside the tank (which is obviously better with a movable 3D model), which is more of a psychological benefit, admittedly.

    ...This is now probably better suited for an HTML5 forum, but would you recommend any particular HTML5-based visualization tools? Better yet, any that support scripts/dynamic 3D modeling, as Unity would?
     
  7. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Understood. All my math and physics undergrad and graduate classes used Simulink and was required for our labs, most colleges have site licenses, every one I've attended does. You mention sponsors, so perhaps this isn't a lab project.
     
  8. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,770
    @Tawnwen, while there are tons of drag and drop tools for html5, to be honest, I am not sure if you find anything suitable, for building process plant within free cost. I know I have seen some while ago, and may be good, but are paid. Question is, if you have budged to buy license.

    While people like pretty pictures and nice looking models, in industry more important is practicability and simplicity.
    I would ask, what is exact project specification? To represent status of the plant, or having pretty 3D models?

    You see, with 3D models you introduce complexity, which makes hard later to maintain. Harder to scale, harder to adjust, harder to replace.

    If you have images of components, or even simple gradient, to represent shape of tank, is easier to adjust. Even for someone, who has no 3D modeling skills.

    You can achieve above in first post presented look, with no 3D models at all. Alternatively, you can render 3D models to texture.

    I would ask again, do you need focus on visualization of tanks in the plant and its process, or make it nice pretty 3D models, which you can rotate, for visualization?

    And what is expected later to do with it? Does sponsor expect to build other plants too? Now imagine you start have tons of pipes, valves, sensors and maybe even conveyor belts, with robots. Do you expect model all of them in 3D?

    While some may need that, practicality and maintainability will sky rocket, along with cost.

    Symbolism, with simplified components representation, or photos of components works well in industry so far.
     
  9. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    The amount of time allowed is pretty minimal for learning Unity and C#. But on top of that, generating 3D models from arbitrary data at run time isn't a typical Unity use case, and I'm sure will be your biggest risk to the project. The normal workflow is to create models in 3rd party modeling software (Blender, Maya, etc) and import them as assets.

    To generate them at runtime you're not going to find a lot of help, even though Unity can do it, simply because it isn't a common approach and isn't something beginners generally ask about. A bit of information about it at the below link. If though you could use a single or small number of models to represent all tanks, and just use CSV data to adjust their scale values to make different sizes and shapes, that would be a lot more reasonable to complete within your time frame.

    https://docs.unity3d.com/Manual/GeneratingMeshGeometryProcedurally.html
     
  10. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    @Antypodish

    I agree with many of your points. To be completely transparent, our senior design project is a continuation of the previous year's team's progress, and they decided to create a 3D model - that was their interpretation of the sponsor's project description. My initial thoughts were, "it would be a shame not to build off of what (3D modeling in Unity) they've already done".

    To further clarify though, while our sponsors haven't mentioned how the application might be expanded, I don't believe there are any plans to scale the application beyond some small stretch goals. Furthermore, the task of planning/mixing ingredients is pretty isolated and doesn't seem to be part of any other pipeline. The app simply helps determine a safe mixing procedure, and that's about where its use ends, aside from the educational aspect of being able to visualize the contents of the tank.

    I'll definitely be discussing with them exactly the concerns you've brought up. Obviously, a 2D model built on a web-friendly HTML5 tool would be much easier. I just have to find the right one and present an argument.

    With that being said, would you mind expanding on your statement, "You can achieve above in first post presented look, with no 3D models at all. Alternatively, you can render 3D models to texture." ? You're referring to having a 2D representation that appears 3D, correct? Are you referring to a specific tool?

    @Joe-Censored

    Thank you for bringing up the whole ordeal of having to generate models dynamically at run-time. Honestly, that's been the greatest annoyance to our progress. What you linked is pretty much what I've been looking for.

    The previous team who began working on this same project actually started in Blender, but moved to directly modeling in Unity because it was "too hard". I never understood why. I'm also quite new to "normal workflow" of modeling in a 3rd-party program and importing "assets", and I'm even more concerned as to how we'd do all of this on a web application. Maybe you could shine more light on that?

    Your suggestion to create some blueprint tanks and scale them is something I really wish we could do :/ Unfortunately, while there are ~5 distinct models of tanks, there are many variations in the types/brands of inner agitators, probes, and pipes being used within our database of thousands of tanks. Dynamic modeling of each part is really the only option.
     
  11. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    What I referred to as the "normal workflow" is you create the model in a 3D modeling application, and import the model into the Unity editor, not into your built application. Often that means exporting it from the modeling software as an FBX file format, and just copying it into your Unity project's Assets folder. Unity either automatically imports it or you have to take an extra step to manually import. After that you can just drag it into your scene and it should appear in the scene view.

    So long as it is imported, and either referenced by a scene in your application or in a Resources folder, the model will end up in your build.

    Some more detailed info
    https://docs.unity3d.com/Manual/ImportingModelFiles.html

    As for Blender, it is notorious for its nonsensical user interface, with a common comment being that you just need to memorize every hot key like you've traveled back in time to 1988. There are some good Udemy courses though, and I've heard the latest Blender version has an improved UI.

    Edit:
    You could also take a look at ProBuilder, which is basically a limited 3D modeling program inside the Unity Editor. Not as many features as 3rd party modeling software, but might be useful for what you're doing.
     
  12. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,770
    Yep, just 2D looking like 3D. Similar approach as done in many 2D games.

    Further regarding your requirement of different tanks types and piping.
    If you make fewer generic components which are shared among many different tanks designs, then you can reuse them.
    For example making simple pipe drawing /model. Then just rescale and place it accordingly. That can apply to any component. You don't nerd model 50 gauges of pipes.
    Unless you make 3D cad model, no one will care about accuracy of pipe gauge. You juz make it approximately size, to fit representation.

    Also you start going to have trouble, when your tank will have many components. Lets say multiple pipes, valves, pumps and flowmeters. Specially if you want to show something is going on, flow, values, etc, you will make view screen busy and unreadable. This is where simplification and symbolism is more appropriate for such use.

    @Joe-Censored I would be concern trying model everything, for every variation in 3D software. I think will be cause of killing project at its infancy.

    They need prefabs for each type of components. And use these to build full range and variations of models, either in Unity or HTML5.
     
    Last edited: Nov 1, 2019
  13. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    @Joe-Censored

    Ah, I get what you're saying. I'm guessing it's not conventional to generate the model dynamically and import it through a script. If ProBuilder offers a more streamlined entry into the Unity program at run I will consider it, especially since the models don't get particularly complex.

    @Antypodish

    Y'know, I'm not sure why I didn't think of that. Guess I was too caught up in the visual accuracy. That's probably what we'll end up doing, regardless of program.

    What we could do (and correct me if I'm wrong) is create five tank models that are accurate to the 5 main tank types we have, use generic models for each of the components such as mixer blades/probes (since their appearance doesn't really matter) and just put everything together based on the tank CSV at runtime. Fingers crossed Unity is able to do this all on a web page... if not, we'll just have to find an alternative tool.

    Anyway, thanks for the help c:
     
    Joe-Censored likes this.
  14. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    445
    I build mechanical machines (arcade cabinets) 80 hours a week in unity and think it would be pretty simple. Webgl isnt too bad if your not using a ton of polygons.

    I would look into playmaker plugin for Unity. Its a state manager that works cleanly inside of unity. It simple to use and TONS of learning material. There are 1,000s of already made "actions" to get you going. Its is great for building quick and visually watching it happen. The ability to add "breakpoints" (it pauses the game and gives you the ability to pinpoint bugs or certain times of the game/project.) makes it great for learning and understanding.

    I have used it in production on some pretty large projects and it has taught me unity the fastest way possible.

    Im actually doing something similar to what you are asking right now on a fun side project I am working on for a customer. Its kind of a "shopping experience" that will load models and activities based on a CSV file of items.
     
  15. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    @devotid

    Hm, I'll definitely check out the playmaker plugin. Though being beginners at Unity making a relatively simple project, I hope it's not overly-complicated to use.

    I'm interested in your personal project. Is it per chance... WebGL/Unity-based? That would mean there is a feasible pipeline that gets CSV files from server to browser, and then gets the CSV from the browser to the Unity/WebGL application being run.
     
  16. devotid

    devotid

    Joined:
    Nov 14, 2011
    Posts:
    445
    I am not sure about WebGL. I simply dont know enough about "browser" stuff. I have loaded a csv file into my .exe desktop PC based games for player preferences and scores but when it comes to loading files in a web browser... I know much is limited because of the security issues of reading off of a users HDD.

    But I am pretty sure what you are asking is very much possible. Im sure there are many apps that read data from a server and display it in a Unity WebGL build.
     
  17. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Break the project into smaller pieces. Wait on the CSV import, get it working first with hard coded values. Which of you is familiar with C# programming? You might consider Simulink instead, it is designed for these exact types of problems, and every college has a site license. It doesn't require programming, and uses a graphical drag-and-drop interface. What college class is this for? You mentioned sponsors, is someone paying for this work?
     
  18. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Are you familiar with Simulink to make such a recommendation? I do, I teach it. And Labview, and Unity. I'm in a good position to make a recommendation for a beginner project.
     
  19. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,770
    I was involved in designing of dual arm robotic manipulator of industrial grade of 7DoF each, attached on demolition Brokk robot. That work initially was with simulink. Developing mainly State Space based control system.

    Simulink is all cool for academia and early for development. But for industrial applications there are better solutions. I was highlighting that conflict of interest.


    Become very problematic problematic, when academia subject had no industrial expertise, but merrily focused on theory. There was missing link to connect two worlds.

    Also I was working in industry with PLC and SCADA systems, to mention in brief.
     
  20. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Industrial application for a college project? Ok
     
  21. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,770
    My whole point in this thread was not, to imply industrial approaches, but recognize feasibility of the proposed project goals, for specified available resources and time span.

    I could recognize multiple issues at the start, which I just pointed out. I am fully aware how students are willing from giving everything vs nothing to the group projects. So I took that into account as well.

    Never the less, I am interested how OP's project went/is going. And which solutions finally were decided to use.
     
  22. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Agreed. If I were to build the same project, I could probably build it in a day in Simulink, a week in Labview, and maybe a week or two in Unity. Of course, a Simulink project is not publicly viewable, and requires Simulink. Same for Labview. A WebGL implementation in Unity would be visible to the world, and therefore probably the most likely choice. If this was for a college lab project to present to an instructor or a handful of college associates, then Simulink.
     
  23. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,770
    Yep. It is doable in very short time. That is no doubt by all means. And by single person. But mind, you are most likely proficient with using such tools, knowing each side quirks and positive sides. We know, the quirk bits are the one, which people tend to spend much time on, if not familiar with.

    Short anecdote. There was one specific version of SCDA I was worked at some point, which had color filed in properties list of the element, which when edited in specific way, it always crashed Software. Problem seems trivial, but if unfamiliar, or forgetting about steps, It can be frustrating and time consuming.

    All is nice, when someone can teach others. Let say LabView or Simulink, or Unity etc. But like in case of discussed college project, it sounds that students need to learn such tools by them self, not being much familiar with available solutions yet. Which sure is really good opportunity to execute such exercise. But also need pass the assignment at good score. While good score we know, it does not mean simulation has to work in 100%, as long there is justification what didn't work and why.
     
    Last edited: Nov 16, 2019
  24. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    @JeffDUnity3D @Antypodish

    Since leaving and coming back to this thread, our team has decided to "go with Unity for the time being". We believe it supports everything we're after and that it's doable (and maybe some of us are excited to learn it). We're just betting on being able to put it together before May of next year.

    Because it's been repeatedly brought up; this is for our year-long comp-sci senior design project. Our actual "sponsor" and the ones who are requesting this product, however, is a real, very large, reputable company who fully intends on using this for production. While companies who sponsor a senior design project prompt are not guaranteed a complete working project by any means, we are in close contact with the workers there and it would be fantastic if we could actually get something usable to them.

    So I take your recommendations quite seriously. At the moment I'm re-considering Simulink simply because it seems like a lightweight alternative to Unity, which will definitely carry some bloat. Though, considering we (1) want the app available on the web, (2) we'd prefer using a web app to fetch tank data and import it automatically instead of making users download and import it themselves, and (3) we need to generate many different tank models based on said data using pre-modeled components, it almost seems necessary to use Unity. I don't think Simulink or LabView have all these capabilities.

    I'm not familiar enough with digital simulation/visualization to know which 2D/3D desktop/web software is best for my sponsor's needs. Though I have a sneaking suspicion that somewhere down the line, we'll regret not going with some simple 2D HTML5 tool that would make the app a lot more elegant. Seeing that I lead communications, and that my teammates + sponsors pretty much go along with whatever I recommend, I hope I've made the right choice.

    (Oh, and thanks for everyone's input so far)
     
    Last edited: Nov 19, 2019
  25. Antypodish

    Antypodish

    Joined:
    Apr 29, 2014
    Posts:
    10,770
    @Tawnwen I appreciated for coming back to us with an update on project and decision of taken route.
    Unity is great tool, but will require some time to get familiar with.

    It would be nice, if you also come back to us few months later with short replay, regarding conclusions and update, on taken choices. It could be nice educational message.

    Since you seems have mind set anyway, I can only add all best at this point.
     
  26. Tawnwen

    Tawnwen

    Joined:
    Oct 30, 2019
    Posts:
    15
    @Antypodish Not a bad idea. I'll update the thread once things are stable; at worst this'll be a very valuable learning experience. And thanks c:
     
    Antypodish likes this.
  27. JeffDUnity3D

    JeffDUnity3D

    Joined:
    May 2, 2017
    Posts:
    14,446
    Tawnwen likes this.