Student Name : Bashar Beshoti
Virtual Spatial Design, is a BSc final project at University Of Haifa supervised by Prof Roi Poranne. It leverages geometric comprehension and full algebraic functionality to render scenes in real-time. The primary aim of the project is to facilitate interior designing through various functionalities such as PushPull+, Mesh Model Transformation, Scalping Mesh Model, among others.
Mainly, Reading Books and Doucments, watching videos on Youtube.
-
Youtube Videos:
- Learn C# Beginner FREE Tutorial Course - CodeMonkey
- Learn Unity Beginner/Intermediate 2024 (FREE COMPLETE Course - Unity Tutorial) - CodeMonkey
- How to make a VR game - Unity XR Toolkit 2022 - Valem Tutorials
-
Books List :
- Thorn, A. 2015. Mastering Unity scripting : learn advanced C# tips and techniques to make professional-grade games with Unity. Packt Publishing, Birmingham, England.
- Hardman, C. 2020. Game Programming with Unity and C# : A Complete Beginner’s Guide. Apress : Imprint: Apress, Berkeley, CA.
-
Doucmentation :
- Unity Documentation
- Via
MixedRealityFeatureTool, I downloadedMRTK3package , then sets up the VR setup enabling player movement. - Installation of
ProBuilderplugin. XR Device Simulationenabling player controls in action on PC.
Figure 1 : XR Device Simulation - This utility lets you simulate user inputs from plain key presses (be it from a keyboard and mouse combo or a controller) to drive the XR headset and controller devices in the scene.
Building an enviroment along with setting up L/R controllers as it should be. Afterwards, worked on Character ActionMap for Character Movement.
Figure 2 : Character Movement in user interface provide varity of actions
Figure 3 : First Planned UI
Creating classes Polygon, Rectangle,Quad and Point as 2D Mesh Objects. For the 3D Mesh Objects, I've used ProBuilder CreateShape Supporting multiple different game objects useful for archicture in real-time.
Figure 4 : Drawing 2D Meshes; Point, Quad, Rectangle and Polygon
Instead of blindly chosing vertices, i worked on drawing a line that visualize the edges of the polygon during drawing procedure. Furthermore, i added Canvas that hold ons the main GUI for user that accompany the user during runtime.
Figure 5 : Drawing 2D Meshes along with line drawing to preview polygon
Figure 6 : Inserting 3D Meshes
Adding MeshCollider for each created Mesh during runtime and enabling both Hover-Highlight and Selection.
Figure 7 : Real-time Selection & Hover Highlighting over runtime created objects only
Creating the basic Transformation for Mesh Objects (Scale,Rotate and Translate) where the user can modify objects Transform componenet. Moreover, establishing a singleton class that contain all the nessecary data to move data from scene to another and hold on the nessecary game objects.
Figure 8 : Grasp
Figure 9 : Rotate
Figure 10 : Scale
Creating Multiple Scenes; Welcome, Settings, Main and Editor. where Welcome is an intro page for the project, the Settings responsible for Charachter & Game Settings, lastly Main and Editor are the project pillars that I am relying on.
Figure 11 : Editor Scene
Figure 12 : Measure Tool
Figure 13 : Pocket Canva & Element Level selection window
Creating Extrusion and Inclusion in runtime over game object that has been sent to Editor scene where it provides mesh object shape manipulation + Optimization process where i deleted the non-nessecary elements (Vertices and Faces).
Figure 14 : Pull/Extrusion
Figure 15 : Push/Inclusion
Creating a Options list which contain :
- Subdivision Game Object:
- Flipping Edges
- Flipping Faces
- Triangulate / To Quad
- Undo
- Redo
- Visualize Skeleton/Grid
- Viusualize Vertices
Figure 16 : Options List
Figure 17 : Game Message/Alert - part 1
Figure 17 : Game Message/Alert - part 2
Subtraction of a Sub-face from the main face where it divide the face into 9 different faces. Hole generation contain same principle except it deletes the subface as well generating a hole inside a face.
Figure 13 : Face Subtraction in action
I've modified the structure of the scenes and added few things and fixed few bugs along the execution.
