Introduction
The overall aim for the project is to research and experiment into different methods of deforming meshes in real time while making the deforming meshes seem realistic. The program needs to be also optimised so that it doesn’t take a lot of memory to run and can be placed as minor effect file into a larger program. It must also have force working against the deformity to make sure that the deformity will be realistic and not force the object to deform completely and then later be able to return to there original state.
Motivation
The reason behind wanting to do this is because it relies heavily on the physics side of programming with a lot of the forces acting on the object means that there will be multiple equations necessary to get the object to behave like it should and I believe it will be amusing to find, manipulate and use these equations in the production of my project. The project is also based around the manipulation of the object’s meshes which is something I have very little practice in doing and so it will be interesting to see how I can possibly work with manipulating meshes of the loaded in objects.
I can see this being an interesting project to others as it will be based around the manipulation of objects this itself is something not used often in games and if I can get the program to run at a good optimised rate then it could possibly be used within an engine to simulate the changing of objects shapes and size.
Research question
Is it possible to produce an optimized program which can allow the user to deform a rendered object and that object to return to its original state in real time?
Addressing the question
To answer this question research must been done into the different methods of changing meshes in real-time in a program. As of this time I have already found multiple methods and from the ones of which I have found so far the radial basis function method seems the most suitable for what I am trying to produce. While this method would be useful for producing my product it does not have sort of interaction par moving the camera with the user which is something which I want to include in my end product. This means that I will need to look into the different equations used to find the forces which affect the object when pressure is placed onto it. These equations must also be flexible so that the coefficient in the pressure placed on the object can be changed.
Although there are things already needing to be looked into, experimented with and implemented into a working product there still multiple ways of furthering answering the question at hand by introducing different effects and methods into the product. The first of which is by being able to change the texture of the object of which is being pushed on. This will have a different effect on the forces placed onto the object and thus the possibility of different outcomes (i.e. shattering the mesh instead of deforming). This means that to get this working I’ll need to look into the creating a setup where the textures of the objects can be chosen and the values of these will affect the outcome of the forces placed upon the object. I will also need to look into splitting meshes which will be complicated and while close to the wanted objective of this product is too much unnecessary work when the wanted product can be produced using easier methods. These ideas are possibilities of furthering the product and giving a better depth into answering the question asked for this product.
I will also need to experiment around with the methods for multiple reasons. First of all I will need to use trial and error to understand how the methods work and how I can change the program to fit to my criteria’s. The next thing I will need to experiment on is in ways of which pressure can be applied to object and the effects it has on the object. The force and pressure applied onto the object must act as realistically as possible and so I will need to test the equations to make sure they are producing a realistic outcome. Finally I’ll need to optimise the program so that the program could be easily implemented into another program and not take up too much memory while producing its effect. This means that certain lines of code will need to be taken out or changed to run smoother and optimising techniques will be needed to be implemented. These techniques need to be tested beforehand to make sure that they will affect the fps the way that I want it to.
Resource requirements
What I will need to run will be first a compiler preferably visual studio C++ and I will also need an API to write my program. I will probably write my program in opengl but will also take directx into context as well. Using these I will be able to produce my final product.
While I have an overall idea on how to make my meshes deform I still need to do a lot more research into the subject to do this I will most probably need the use of multiple books to find out some of the necessary equations needed to make the deforming of the meshes as realistic as possible. I will also need the internet to find tutorials on specific problems or to find scholar papers which are relatively close to my own project so I can further my research into the methods of which can be used to achieve my goal and thus either find a better method in getting my end result or improving on the method which I at the moment plan on using.
There are also other things which could also help with the production of the end product. These being mainly objects of which the program plans to imitate. The first which would be imitated will be a stress ball so it would be best if I get hold of stress ball. By using the stress ball as an example I can then test the program to make sure that the program is doing what it is supposed to be doing by comparing it to its real-life object. This will allow me to easily produce a more realistic end product.
References and Bibliography
(Chris Wojtan 2009, Guinot 2006, Noe 14th August 2009)
Chris Wojtan, N. T., Markus Gross, and Greg Turk. 2009. Deforming meshes that split and merge. [online]. SIGGRAPH. Available from: http://www.cc.gatech.edu/~wojtan/topo_goop/topo_goop.html [Accessed 29th September 2009].
Guinot, J. 2006. oZone3D.net Tutorials: Mesh Deformers in GLSL. [online]. oZone3D.net. Available from: http://www.ozone3d.net/tutorials/mesh_deformer.php [Accessed 29th September 2010].
Noe, K. 14th August 2009. Computer Graphics Lab: Noe's tutorial on deforming 3D geometry using RBFs. [online]. Alexandra Institute. Available from: http://cg.alexandra.dk/2009/08/14/deforming-geometry-using-radial-basis-functions/ [Accessed 29th September 2010].
Thursday, 21 October 2010
Friday, 8 October 2010
Radial basis functions
Looking through the research i have found so far for my personal project has linked me to multiple different possible ways to produce my final product. At the moment the best way i can see in producing is by using the radial basis function.
The basic set up of the radial basis functions is that a specific object has a set amount of control points placed into the object. These control points are then moved which will cause the mesh of the object to deform to its new shape (dependent on the control points are). The deformity is found by the use of the radial basis function which calculates the displacement of the control points with the meshes previous form and then manipulates the vector coordinates of the objects points before rendering the new shape of the object.
This style from the looks of it could be the easiest to produce a product and also optimize it so multiple objects can be manipulated in real time inside the program but at the same time considering other ways of producing deforming objects makes this style of manipulating an object the least efficient especially considering that the object will be manipulated by the user the control points may not be able to manipulate the part of which the user is changing the shape of the object.
The basic set up of the radial basis functions is that a specific object has a set amount of control points placed into the object. These control points are then moved which will cause the mesh of the object to deform to its new shape (dependent on the control points are). The deformity is found by the use of the radial basis function which calculates the displacement of the control points with the meshes previous form and then manipulates the vector coordinates of the objects points before rendering the new shape of the object.
This style from the looks of it could be the easiest to produce a product and also optimize it so multiple objects can be manipulated in real time inside the program but at the same time considering other ways of producing deforming objects makes this style of manipulating an object the least efficient especially considering that the object will be manipulated by the user the control points may not be able to manipulate the part of which the user is changing the shape of the object.
Tuesday, 5 October 2010
Questions to answer
Since my original project ideas blog post i have found multiple research links into the my planned projects and from the research i have narrowed down my ideas from the 5 to a main one plus 2 back ups just in case the first falls through. I have also come up with an idea of the questions which need to be answered:
Question: Is it possible to produce a optimized program which can allow the user to deform a rendered object and that object to return to its original state in real time? (Main project idea)
(Can fluid object be forced to conform to another object parameters?
Can the shadows of an object be made to be affected by the light source of the program? (back up questions))
Now that we have a question to answer we must understand the reasoning behind the questions and what needs to be done to find the answer to this question:
What is the focus of your project?
To be able to produce a realistic object which the shape of the object can be affected by the users input.
What information do you need to find out about?
The physics behind the manipulation of objects in real-time and the ability to manipulate object meshes through coding.
What Experimental work do you need to perform?
I will need to experiment with different methods of manipulating objects and see which way is the best to work with for my project. I will also need to experiment on the different way of which the user will manipulate the object in real time.
I also believe that the question can be refined to include multiple object manipulation each with there own way in which they can be manipulated. such examples could be a bean bag and maybe possibly later getting glass to shatter.
Using the research that i will and have obtained for this question i will hopeful be able to produce a product which will allow the manipulation of multiple objects meshes in real time and that specific objects will be affected different to the force placed on them
Question: Is it possible to produce a optimized program which can allow the user to deform a rendered object and that object to return to its original state in real time? (Main project idea)
(Can fluid object be forced to conform to another object parameters?
Can the shadows of an object be made to be affected by the light source of the program? (back up questions))
Now that we have a question to answer we must understand the reasoning behind the questions and what needs to be done to find the answer to this question:
What is the focus of your project?
To be able to produce a realistic object which the shape of the object can be affected by the users input.
What information do you need to find out about?
The physics behind the manipulation of objects in real-time and the ability to manipulate object meshes through coding.
What Experimental work do you need to perform?
I will need to experiment with different methods of manipulating objects and see which way is the best to work with for my project. I will also need to experiment on the different way of which the user will manipulate the object in real time.
I also believe that the question can be refined to include multiple object manipulation each with there own way in which they can be manipulated. such examples could be a bean bag and maybe possibly later getting glass to shatter.
Using the research that i will and have obtained for this question i will hopeful be able to produce a product which will allow the manipulation of multiple objects meshes in real time and that specific objects will be affected different to the force placed on them
Subscribe to:
Posts (Atom)