Solved

Extruding a 2D path

Posted on 2004-09-18
238 Views
Hi guys,

I have developed a 2d graphics app which can create simple outlines (consisting of straight lines only).  Using DirextX, I would like to extrude each line into a face based on a height parameter.  Each Shape (2D) has an array of Point objects (X & Y values).

Can anyone help?

I'm using C# but i'll accept the algorythm in pseudo code if you're not familiar with c# as long as it uses standard verticies / vertex buffers / index buffers etc.

Chris
0
Question by:chrisevans123
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 17

Accepted Solution

davebytes earned 460 total points
ID: 12109431
If you aren't using too many lines to begin with, don't even bother worrying about optimization.

You may want to swap Y and Z in the following, depending on how you want things to look initially.

For each point, you want to make it a 3D point at say Z=100 to start with.  Then you also need the extruded matching point at Z=100+height.

A final vertex array can be rendered as a triangle strip if the points are interlaced.  That is, assuming your initial vertices are in a 2d float structure, and you have a 3d point structure (which D3D does), you want to do something like:

Point2D *array_orig; // already filled in.
int vertex_count; // already filled in...
float extrude_height; // same...

Point3D *array_3d = new Point3D[vertex_count];
int sub;
for (int i=0; i<vertex_count; i++)
{
subi = 2*i;
array_3d[subi].x = array_orig[i].x;
array_3d[subi].y = array_orig[i].y;
array_3d[subi].z = 100;
array_3d[subi+1].x = array_orig[i].x;
array_3d[subi+1].y = array_orig[i].y;
array_3d[subi+1].z = 100 + extrude_height;
}

Then array_3d can be rendered as a triangle-strip.  You might need to play with clockwise vs counter-clockwise culling (or turn culling off).

-d
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Artificial Intelligence comes in many forms, and for game developers, Path-Finding is an important ability for making an NPC (Non-Playable Character) maneuver through terrain.  A* is a particularly easy way to approach it.  I’ll start with the algor…
As game developers, we quickly learn that Artificial Intelligence (AI) doesn’t need to be so tough.  To reference Space Ghost: “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer. (http://www.youtu…
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…
Suggested Courses
Course of the Month8 days, 4 hours left to enroll