Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(1 edit)

That's cool, nice work!

I didn't check all operations yet, but some remarks:

1) Depending on the operation, I would put the vectors at different places, or add extra things. Some examples: vector addition is best visualized when vectors are put head-to-tail. If you show reflect and use one vector as a plane normal, it would be helpful to visualize the plane as well (just add a quad).

2) Despite the fact that the camera can rotate, it remains hard to visualize 3D vectors this way. (What is their "depth"?)

3) How does dragging a vector (Right mouse button) work exactly? What happens with the third coordinate?

4) I wouldn't use a cube to visualize rotations. With all the symmetries, it can get confusing.

I made similar Unity tools to teach 3D Math, so here's how I solved the second point:

a) Add arrow models for the vectors, that are physical objects that interact with lighting (shading), and have a bit of perspective.

b) Put a light straight from above, and a plane on the bottom where shadows are cast.

This way, the orientation of the vectors is more clear intuitively.

For the fourth point above: I used a public domain space ship model to show transformations ( by Kenney).

Below are some example images. 


Also, my tool is meant for use inside Unity, so then you have all the scene tools (gizmos, keyboard shortcuts) and inspector ready to use, ready to manipulate things. That saved me a whole lot of UI implementation. :-)   But that only works for experienced Unity users. Good job on the implementation of all of the UI elements!

Thank you for the suggestions, they are really helpful!

I really agree with all of them and will implement them in the next version.

About number 3, I am actually having a hard time making it work well. I am currently defining two planes, one parallel to the Y axis with 0 in the Z coordinate. and one perpendicular to it with 0 in the Y coordinate.
So when someone right click the mouse I raycast to check which plane he hit, and return the world position of that point (if he hit the first plane I will not check the second).

This is the best I could come up with to make the world position of the raycast somewhat make sense with what you are seeing.
I also tried defining the planes at an angle, which helped with keeping all coordinates, but I felt like what was happening was less intuitive.

If you have an idea of how to improve this part I will be really happy to hear!

I actually started this project in Unity for myself. And I was just using DrawGizmos and the inspector.
Than at some point I started to feel like it had a solid foundation and I decided to work on making it run in a build as well.

Again, thanks a lot for the detailed feedback, I appreciate it.
And your project looks really cool as well :D