Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 13/10/2009 at 15:53, xxxxxxxx wrote:
User Information: Cinema 4D Version: 11 Platform: Windows ; Language(s) : C++ ;
--------- Hello I am currently using Polygon3D to create a visual aid in my plugin. I was wondering if someone could tell me how I would use DrawPoly to accomplish the same task?
Here is the code I use that uses Polygon3D()
Here's the declarations and such.
> `
\> BaseContainer *bc=((BaseList2D* )tag)->GetDataInstance(); \> LONG lngMySymPlane =tag->GetDataInstance()->GetLong (SYMMETRY_PLANE); \> LONG lngMirroredSide = tag->GetDataInstance()->GetLong(MIRRORED_SIDE); \> LONG trans = 100; \> LONG boxTrans = 200; \> Vector color = bc->GetVector(PLANE_COLOR); \> Vector boxColor = bc->GetVector(BOX_COLOR); \> Real size; \> size = .60; \> \> //Matrix for determining scale, rotation, and position. \> Matrix m = op->GetMg(); \> Vector rad = op->GetRad(); \> \> m.v1 *= rad.x+rad.x; \> m.v2 *= rad.y+rad.y; \> m.v3 *= rad.z+rad.z; \> \>
`
Here is one of the times that Polygon3D is called.
\> \> if (tag->GetDataInstance()->GetBool(SHOW_PLANE)) // If SHOW_PLANE is checked, then draw the polygon. \> { \> \> Vector p[4]; \> \> p[0] = Vector(-1,1,0); \> p[1] = Vector(1,1,0); \> p[2] = Vector(1,-1,0); \> p[3] = Vector(-1,-1,0); \> \> \> p[0] = p[0] * m; \> p[1] = p[1] * m; \> p[2] = p[2] * m; \> p[3] = p[3] * m; \> \> Vector f[3] = { Vector(color),Vector(color),Vector(color)}; \> \> bd->SetLightList(BDRAW_SETLIGHTLIST_NOLIGHTS); \> bd->SetTransparency(trans); \> bd->Polygon3D(p,f,TRUE); \> \> \> \> return true; \> } \> \> \>
I would like to try to use DrawPoly fo this because the results I get from Polygon3D are not quite as good as I had hoped.. There are a lot of shading issues.
Any help would be greatly appreciated.
Thanks,
~Shawn
On 14/10/2009 at 03:19, xxxxxxxx wrote:
Anyone know how I would accomplish this with DrawPoly()?
On 14/10/2009 at 04:01, xxxxxxxx wrote:
Here is a simple example how to draw for instance a shaded triangle.
> \> Bool LookAtCamera::Draw(PluginTag \*tag, BaseObject \*op, BaseDraw \*bd, BaseDrawHelp \*bh) \> { \> //use scene lights for shading \> bd->SetLightList(BDRAW_SETLIGHTLIST_SCENELIGHTS); \> \> //set the drawing space; in this case it's the object space of the tag's parent object \> bd->SetMatrix_Matrix(NULL, op->GetMg(), 0); \> \> //create arrays for the vertex postions, colors and normals \> Vector vp[3] = { Vector(0.0), Vector(0.0,100.0,0.0), Vector(100.0,0.0,0.0) }; \> Vector vf[3] = { Vector(1.0), Vector(1.0), Vector(1.0) }; \> Vector vn[3] = { Vector(0.0,0.0,-1.0), Vector(0.0,0.0,-1.0), Vector(0.0,0.0,-1.0) }; \> \> bd->DrawPoly(vp, vf, vn, 3, 0); \> \> return TRUE; \> } \>
\> Bool LookAtCamera::Draw(PluginTag \*tag, BaseObject \*op, BaseDraw \*bd, BaseDrawHelp \*bh) \> { \> //use scene lights for shading \> bd->SetLightList(BDRAW_SETLIGHTLIST_SCENELIGHTS); \> \> //set the drawing space; in this case it's the object space of the tag's parent object \> bd->SetMatrix_Matrix(NULL, op->GetMg(), 0); \> \> //create arrays for the vertex postions, colors and normals \> Vector vp[3] = { Vector(0.0), Vector(0.0,100.0,0.0), Vector(100.0,0.0,0.0) }; \> Vector vf[3] = { Vector(1.0), Vector(1.0), Vector(1.0) }; \> Vector vn[3] = { Vector(0.0,0.0,-1.0), Vector(0.0,0.0,-1.0), Vector(0.0,0.0,-1.0) }; \> \> bd->DrawPoly(vp, vf, vn, 3, 0); \> \> return TRUE; \> } \>
cheers, Matthias
On 14/10/2009 at 06:41, xxxxxxxx wrote:
Thanks Matthias, That helps immensely.