College project, limited time, where to best start?

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

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!

Not sure if Unity will be the best solution for this project, have you considered Mathworks Simulink?

@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.

I would highly suggest Simulink. It is more appropriate, and is commonly used by most colleges for this very use. See

and http://ctms.engin.umich.edu/CTMS/index.php?example=Suspension&section=SystemModeling

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.

1 Like

@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?

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.

@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.

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.

@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 :confused: 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.

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.

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.

@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:

1 Like

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.

@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.

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.

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?

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.

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.

Industrial application for a college project? Ok