DrawPolygonObject() w/Transparency



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 09/11/2008 at 19:50, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R9-R11 
    Platform:   Windows  ; Mac  ;  Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    Is there any way to draw with BaseDraw::DrawPolygonObject() or BaseDraw::DrawObject() taking into account transparency (BaseDraw::SetTransparency() for instance - which doesn't work)?

    I've tried BaseDraw::Polygon3D() for a polygon object, but the results otherwise are unpleasant (lighting and such).

    Is there a better or proper way?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/11/2008 at 04:14, xxxxxxxx wrote:

    Hey Robert,

    try to use negative values for SetTransparency (0 to -255). That might work.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/11/2008 at 08:29, xxxxxxxx wrote:

    Did that, nope. ;)

    SetTransparency() doesn't seem to work with these methods at all.

    This is why I tried building the polygon object using Polygon3D() or PolygonNew() but these appear oddly - maybe because it treats the polys as individual rather than as part of an object (?).



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/11/2008 at 11:13, xxxxxxxx wrote:

    hmm...have you tried DrawPoly too? There you can specify vertex normals which should be working to rather show a connected polyobject.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 10/11/2008 at 12:33, xxxxxxxx wrote:

    If I could ever get a polygon object with NORMALS! ;) So far, neither C4D nor Riptide (free or pro) will create them solely from a Phong tag (and there is no Normal tag in R10+).

    That's one reason why I hadn't tried it yet.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 11/11/2008 at 10:41, xxxxxxxx wrote:

    Hey Robert,
    Sorry to be so brief in my e-mail... Riptide Pro should be creating Normals with just a Phong Tag present (assuming you have "Export Normals" enabled).  Is it not?
    Keith



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 11/11/2008 at 11:48, xxxxxxxx wrote:

    Neither is creating normals (vn) in the exported .obj file. I am using a pre-release version of Riptide Pro though (haven't gotten around to getting the update and serial number). Maybe I'll get that updated and try again.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 11/11/2008 at 12:08, xxxxxxxx wrote:

    Ahh (odd).  Anyway, I just double-checked and the release version of Riptide Pro does indeed create Normal records ('vn') with just a Phong Tag - just send me your latest digits and I'll get you a license.
    Riptide (Classic) would also create Normal records, IF the mesh has a Normal Tag, which can be created using my Add Normals plugin (there never was a way to create a Normal Tag using the C4D interface - that's why I wrote Add Normals).



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 11/11/2008 at 12:21, xxxxxxxx wrote:

    BTW, instead of the above, maybe try setting xray mode:

        
        
          
          ObjectColorProperties objColor;  
          objColor.usecolor = ID_BASEOBJECT_USECOLOR_ALWAYS;  
          objColor.xray = TRUE;  
          m_MagZone->SetColorProperties(&objColor);  
        
    

    ...I was using that on a separate object, but maybe your plugin can set it on itself?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 11/11/2008 at 12:37, xxxxxxxx wrote:

    Got the export working (as you already know). :)

    Plugin objects don't support X-Ray mode - it is not included in the Basic Properties. So, I'd be right back where I started - how to set transparency with BaseDraw. ;)

    Unfortunately, how even X-Ray is done isn't explained anywhere.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/11/2008 at 08:36, xxxxxxxx wrote:

    Quote: Originally posted by kuroyume0161 on 11  November 2008
    >
    > * * *
    >
    > Got the export working (as you already know). :)
    >
    > Plugin objects don't support X-Ray mode - it is not included in the Basic Properties. So, I'd be right back where I started - how to set transparency with BaseDraw. ;)
    >
    > Unfortunately, how even X-Ray is done isn't explained anywhere.
    >
    > * * *
    Hmm... add a "C++ SDK - Rounded Tube" to your scene... it has an X-Ray option in it's Basic properties.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/11/2008 at 08:44, xxxxxxxx wrote:

    Actually, I just tried this in the Rounded Tube  example...

        
        
          
        Bool RoundedTube::Message(GeListNode *node, LONG type, void *t_data)  
        {
        
        
        
        
            if (type==MSG_DESCRIPTION_VALIDATE)  
            {  
                BaseContainer *data = ((BaseObject* )node)->GetDataInstance();  
                CutReal(*data,TUBEOBJECT_IRADX,0.0,data->GetReal(TUBEOBJECT_RAD));  
                CutReal(*data,TUBEOBJECT_ROUNDRAD,0.0,data->GetReal(TUBEOBJECT_IRADX));  
            }  
            else if (type==MSG_MENUPREPARE)  
            {  
                ((BaseObject* )node)->SetPhong(TRUE,FALSE,0.0);
        
        
        
        
                //****  insert this code, below *****  
                ObjectColorProperties objColor;  
                objColor.usecolor = ID_BASEOBJECT_USECOLOR_ALWAYS;  
                objColor.xray = TRUE;  
                ((BaseObject* )node)->SetColorProperties(&objColor);  
            }  
            return TRUE;  
        }  
        
    

    ..worked like a champ.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/11/2008 at 08:48, xxxxxxxx wrote:

    Hmm.. that was a generator object though... deformer objects don't have the X-Ray option - as you mentioned.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 13/11/2008 at 05:39, xxxxxxxx wrote:

    You could also calculate the vertex normals from the mesh yourself.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 13/11/2008 at 17:09, xxxxxxxx wrote:

    Or, I could use PolygonObject::CreatePhongNormals(). :)

    Except that changing the values on the added/required Phong tag doesn't seem to change the display results of BaseDraw::DrawPoly() - always as if Angle Limit is off or Phong Angle is 180d even though I'm setting the values. It would sort of suck if I have to load the real object from file, get this Vector array, and write it out to file to use those values instead.

    Luckily, DrawPoly() is responding to BaseDraw::SetTransparency().



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 14/11/2008 at 00:10, xxxxxxxx wrote:

    What I'm doing is just using the polygon normal for the vertex normals - about all I need as this is a display representation and not a 'real' object. The results are facetted but at least not overly smoothed on the other end of the spectrum. Now onto more important parts of the code. :)



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 14/11/2008 at 06:23, xxxxxxxx wrote:

    Just for future reference - and something I only recently discovered - calling ie.
    op->SetPhong(true, true, Rad(80.0));
    ... will create/add a Phong Tag on your mesh.   I used to always manually MakeTag() (or Alloc and Add) and then call SetPhong(), but that was apparently redundant.
    Also, op->CreatePhongNormals() should give you Normals once a Phong Tag is on your mesh.
    That may or may not help you out in this case - I want to see the more important parts working, myself :).


Log in to reply