Skip to content

0shu/Final-Year-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Virtual Blacksmithing

Prototype Screenshot Joshua Simons - University Final Year Project
Borne of frustration at current game crafting systems and a desire to make something more interesting and more like actual crafting instead of a list based collectathon

The idea of this project is to create simulated experience of blacksmithing.
Maniuplating 3D solids plastically by simulating forces and adjusting meshes.
Ideally resulting in a system which just inputs and outputs a singular mesh.

Contents

  1. Mesh Manipulation
    1. Visual Mesh
  2. Simple Primitives
    1. Simple Cuboid
    2. Simple Tetrahedron
      1. 1D Simple Tetrahedron
      2. 3D Simple Tetrahedron
  3. Multi-Primitive Shapes


Mesh Manipulation

This is the main part of the project. We want to be able to modify the mesh by applying local forces/transformations to it, whilst maintaining a constant volume. Ideally these local effects will approximate real world blacksmithing to a degree by using physical simulations.
Working directly with the mesh is a very complex topic which is hard to grasp and difficult to directly develop upon, so first I've started implementing simpler primitive shapes that allow for mor limited trasnformations in the hopes to combine/expand upon those as the project goes along! (See Simple Primtives below.)
Mesh Manipulation
*

Visual Mesh

I've implemented a simple class to display and connect vertices. This class will have the associated variables/functions to be able to pass a force through the vertices.
Mesh Manipulation
Having an easy to see/understand model will help speed up development, and assist in communicating in the report at the end.


Simple Primitives - Cuboid & Tetrahedron

The idea here was to start small and create something fast/light which can be strung together. We can use lots of the same pieces to create a larger, more complex whole.

Simple Cuboid

This shape is a staple of human thought. All its edges and faces are axis-aligned which makes working on it easier to comprehend and scaling it in different directions easier mathematically.
Simple Cuboid
In the gif above you can see how applying hits to a certain side of the cuboid will shrink it in that axis and expand the other axes to maintain volume. This algorithm is very fast and can be adjusted to shrink the cuboid by any percentage amount in one axis, even using values greater than one to pull a face and stretch out the cuboid in that axis instead.
This is very rudimentary and does not give any ability to change the topology at all. But may still be a useful part of a larger simulation process when just starting out with cuboid billets, and is thus a welcome optimisation which very well may continue right into the finished product.

Simple Tetrahedron

A tetrahedron is the simplest possible 3D shape, being made of the smallest number of the simplest possible 2D shape (4 Traingular Faces). In this variation we imagine the tetrahedron as a combination of a face and an opposing vertex. When maintaining volume, the distance of the vertex to the face is inversely proportional to the size of the face. Increasing one by a factor of 2 means decreasing the other by a factor of 2.

1D Simple Tetrahedron

For this version we only care about the vertex as a 1D line away from the plane and thus all transformations apply along that normal line. We apply a scalar force along that normal and expand transformations out around that. 1D Tetrahedron


3D Simple Tetrahedron

Rather than a proportional 1 dimensional up-down approach this tetrahedron does things the other way around. The vertex is moved along a vector by a certain amount then the proportional difference in height to the opposing face is figured out and the face then expands or contracts to maintain volume. 3D Tetrahedron


Multi-Primitive Shapes

Here's where I'll show the progress of chaining mutiple primitives together by connecting common vertices, edges, and faces.
It's important to break down larger more complex shapes into smaller, more manageable ones. Not Started

About

Place to put my university final project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages