Project Perfect Mod Forums
:: Home :: Get Hosted :: PPM FAQ :: Forum FAQ :: Privacy Policy :: Search :: Memberlist :: Usergroups :: Register :: Profile :: Log in to check your private messages :: Log in ::


The time now is Thu Mar 28, 2024 8:58 pm
All times are UTC + 0
SIBGRAPI 2007: Finding Surface Normals from Voxels
Moderators: Global Moderators
Post new topic   Reply to topic Page 1 of 1 [7 Posts] Mark the topic unread ::  View previous topic :: View next topic
Author Message
Banshee
Supreme Banshee


Also Known As: banshee_revora (Steam)
Joined: 15 Aug 2002
Location: Brazil

PostPosted: Wed Oct 17, 2007 9:12 pm    Post subject:  SIBGRAPI 2007: Finding Surface Normals from Voxels Reply with quote  Mark this post and the followings unread

Introduction:

This article was sent and accepted to the Workshop of Undergraduate Work of SIBGRAPI 2007.

Finding Surface Normals From Voxels explains the Tangent Plane 8.0 auto normals applied in Voxel Section Editor III 1.37, except that the Tangent Plane 8.0 had some serious implementation errors, fixed on recent alpha versions of the program.

The Brazilian Symposium on Computer Graphics and Image Processing is the most important brazilian symposium in the image processing area, covering 3D, animation, modeling, medical, mathematical morphology, among other topics on computer graphics. It counts with the participation of many international scientists as well, from many universities around the world, to share the latest news in computer graphics in Brazil.

All articles must be written and presented in english. Undergraduate articles could be written and presented in portuguese or english. The article was writen in english, so visitors of PPM would understand it. At the conference, I've explained it in portuguese, because the public who checked it was brazilian.

One of the challenges in this article is that the original motivation of the article was to make an auto normals for a voxel editor that edits voxels from 7, 8 years old games. From this perspective, my research looks useless for them. However, voxels are also being used on games for mobiles, since most of them lacks good 3D hardware. Now, with this excuse, we made the article an actual research and interesting for few people over there, since the 99% of the scientists over there are not interested on mobile games at all, neither Red Alert 2 and Tiberian Sun.



This article was written for newbies in the area, since voxel isn't something that attracts many people by being considered obsolette, by many. For starters, here's a vocabulary that may help:


-> Voxel: a pixel of a volume.

-> Volume: A 3D grid of colours. (Imagine a bitmap, but in 3D). Unlike the Bitmap, a volume can be viewed from many angles. For this reason, each voxel needs an orientation (where it faces to), which is the normal (the same normal vector from physics). Volumes may have transparent pixels as well, but in Tiberian Sun, Red Alert 2 and most of cell phone games, this isn't used or interesting at all.

-> 3D Flood and Fill: MS Paint has a little feature called Flood Fill. If you flood fill a pixel, every pixel with the original colour of the flood and filled pixel will get the same colour. In this article, we use this trick to find the voxels that are part of the object.



And the first formula is 1 / Distance. The others are just the derivative computated from it.




Abstract:


Volumetric rendering is a way to represent 3D models on devices with a low use of 3D resources. It allows the use of high poly models, quick collision detection and rasterization operations, making them interesting for the games that are being created for the current generation of mobiles and pocket pcs that cannot handle OpenGL operations with a fast frame rate. However, the lack of knowledge of the shape of the object has proven to be a problem to preprocess its lighting. This short paper presents an heuristic that finds an approximation of the direction of normal vector of a voxel without the previous knowledge of the mesh, vertexes, edges and surfaces of the volumetric model where it belongs.



Downloads:


-> Finding Surface Normals From Voxels (Article)

-> Finding Surface Normals From Voxels (Quick Poster)

Last edited by Banshee on Tue Jan 21, 2020 3:53 pm; edited 1 time in total

Back to top
View user's profile Send private message Visit poster's website Skype Account
Clazzy
Karma Police


Joined: 26 Nov 2002
Location: Algae Colony On Mars

PostPosted: Fri Oct 19, 2007 12:16 am    Post subject: Reply with quote  Mark this post and the followings unread

I may be a mere second year physicist but is that partial differentiation right? I tried doing it by hand and I don't think that 3 should be there at the top (and you have xc and xp the other way around, of course it makes no difference since it's squared in the end anyway). Am I missing something obvious or have I actually spotted a mistake?

_________________
Quote:
This is sexier than what this forum was supposed to tolerate. - Banshee

Back to top
View user's profile Send private message
Banshee
Supreme Banshee


Also Known As: banshee_revora (Steam)
Joined: 15 Aug 2002
Location: Brazil

PostPosted: Fri Oct 19, 2007 1:26 am    Post subject: Reply with quote  Mark this post and the followings unread

I wouldn't be surprised if you spotted this kind of mistake, since I love calculus so much... but I'm not really sure. Post here what did you find...


Edit: Actually.. I really messed up in an ugly way there when computing the derivative. The 3 should be removed, although it doesnt do much difference in the final result... I'll update the article as soon as I can.

Last edited by Banshee on Fri Oct 19, 2007 9:16 am; edited 1 time in total

Back to top
View user's profile Send private message Visit poster's website Skype Account
Tratos
General


Joined: 01 Jan 2003

PostPosted: Fri Oct 19, 2007 2:19 am    Post subject: Reply with quote  Mark this post and the followings unread

Very impressive Banshee, although i dont understand a word of it Laughing

Back to top
View user's profile Send private message Send e-mail
Banshee
Supreme Banshee


Also Known As: banshee_revora (Steam)
Joined: 15 Aug 2002
Location: Brazil

PostPosted: Sun Oct 21, 2007 2:30 pm    Post subject: Reply with quote  Mark this post and the followings unread

The article has been updated with the correct derivative.

Back to top
View user's profile Send private message Visit poster's website Skype Account
j4m3sb0nd
Commander


Joined: 10 Nov 2004

PostPosted: Sat Oct 27, 2007 3:56 pm    Post subject: Reply with quote  Mark this post and the followings unread

Aha, awesome! Great work Banshee! Perhaps one of the only technical paper on something directly connected to such games as Tiberian Sun, although you had to use the mobile phone excuse to make it accesible. I like how you used C&C voxels, hah, although I haven't read much of the article.

Back to top
View user's profile Send private message
Banshee
Supreme Banshee


Also Known As: banshee_revora (Steam)
Joined: 15 Aug 2002
Location: Brazil

PostPosted: Tue Jan 21, 2020 4:01 pm    Post subject: Reply with quote  Mark this post and the followings unread

Here's a major, but an important bump for this topic. We had to change the file location of the article and the quick poster to get this section running correctly with our new friendly urls system. Sorry for any inconvenience.

Back to top
View user's profile Send private message Visit poster's website Skype Account
Display posts from previous:   
Post new topic   Reply to topic Page 1 of 1 [7 Posts] Mark the topic unread ::  View previous topic :: View next topic
 
Share on TwitterShare on FacebookShare on Google+Share on DiggShare on RedditShare on PInterestShare on Del.icio.usShare on Stumble Upon
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © phpBB Group

[ Time: 0.1364s ][ Queries: 11 (0.0081s) ][ Debug on ]