Baum3D als Plugin (Testphase)

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

On 19/02/2008 at 01:45, xxxxxxxx wrote:

Thank you,

here in english again:
I try to change my Baum3D-program (look http://www.kbuechner.gmxhome.de) to a C++-Plugin.
It is heavy for me to understand it, but it makes fun.
Later I can compile it also for Mac-User.

If you like, you can test it (be carefully with number of recursions)

Please decompress followed files to your C4D-Plugins-directory:

http://www.kbuechner.gmxhome.de/Baum_Plugin.zip

My questions (the first an second answered by Jack soon) :
- how I can generate a second object to texture it separatly(leafs)?
- how can I create a drag-and-drop-field,the user can take any leaf-polygon-object (my also be an apple), and how can I use it in my program?

new question:
- how can I fit the start-view to the size of the tree, to see the whole tree?

thanks,
Klaus

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

On 19/02/2008 at 02:30, xxxxxxxx wrote:

- how can I fit the start-view to the size of the tree, to see the whole tree?

CallCommand(12151L) will "Frame Active Objects". That means that you'll have to set the objects as selected.

> // If you don't have the document already \> BaseDocument\* doc = GetActiveDocument(); \> // op is your BaseObject\* for the tree object \> doc->SetActiveObject(op, SELECTION_NEW); \> // If you need to include children, call this as well \> //(Select Children in Object Manager) : \> CallCommand(100004768L); \> // Frame Active Objects \> CallCommand(12151L);

This is untested so verify its veracity.

- how can I create a drag-and-drop-field,the user can take any leaf-polygon-object (my also be an apple), and how can I use it in my program?

This will depend on if the field is in the Attributes Manager or a Dialog (they have different interfaces). For the Attributes Manager, you create a LINK description in the res file (or dynamically using GetDDescription() in the NodeData for the plugin). For a Dialog, you'll need to use a custom gui element:

> // LinkBox \> BaseContainer     tbc; \> tbc.SetBool(LINKBOX_HIDE_ICON, FALSE); \> // this variable is stored in the dialog class for later \> copyLinkBox = (LinkBoxGui\* )AddCustomGui(IP_COPY_SOURCE,CUSTOMGUI_LINKBOX,String(),BFH_SCALEFIT|BFV_SCALEFIT,0L,0L,tbc); \> if (!copyLinkBox) return FALSE;

You'll need to check Message() for drag-n-dop here:

> // GeDialog.Message \> //\*---------------------------------------------------------------------------\* \> LONG IPPDialog::Message(const BaseContainer& msg, BaseContainer& result) \> //\*---------------------------------------------------------------------------\* \> { \>      //GePrint(BaseContainerToString(msg)); \>      LONG     mid =     msg.GetId(); \>      if          (mid == BFM_DRAGRECEIVE)     return Msg_DragReceive(msg, result); \>      else if (mid == BFM_GETCURSORINFO)     return Msg_GetCursorInfo(msg, result); \>      return GeDialog::Message(msg, result); \> } \> // IPPDialog.Msg_DragReceive - BFM_DRAGRECEIVE \> //\*---------------------------------------------------------------------------\* \> LONG IPPDialog::Msg_DragReceive(const BaseContainer& msg, BaseContainer& result) \> //\*---------------------------------------------------------------------------\* \> { \>      // Copy-Paste LinkBox \>      if (!CheckDropArea(IP_COPY_SOURCE, msg, TRUE, TRUE))     return GeDialog::Message(msg, result); \>      if (msg.GetLong(BFM_DRAG_LOST))                                   return GeDialog::Message(msg, result); \> \>      LONG          cursor =     MOUSE_POINT_HAND; \>      LONG          type =          0L; \>      void\*          object =     NULL; \>      BaseObject\*     op =          NULL; \> \>      GetDragObject(msg, &type;, &object;); \> \>      if ((type == DRAGTYPE_ATOMARRAY) && (((AtomArray\* )object)->GetCount() == 1L) && ((AtomArray\* )object)->GetIndex(0)) \>      { \>           op =     (BaseObject\* )((AtomArray\* )object)->GetIndex(0L); \>           if (op->IsInstanceOf(Obase) && (op->GetTag(ID_IPPFIGURETAG) || op->GetTag(ID_IPPOBJECTTAG)))     cursor = MOUSE_INSERTCOPY; \>           else \>           { \>                cursor = MOUSE_FORBIDDEN; \>                op = NULL; \>           } \>      } \> \>      if (msg.GetLong(BFM_DRAG_FINISHED)) \>      { \>           copyLinkBox->SetLink(op); \>           copySource =     op; \>           copyDoc =          op->GetDocument(); \>      } \> \>      return SetDragDestination(cursor); \> }

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

On 19/02/2008 at 06:20, xxxxxxxx wrote:

thank you very much, I will try it.

But the other problem:
How can I create 2 objects.
I have to return in GetVirtualObjects one Object.
And the other ?

Klaus from Berlin

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

On 19/02/2008 at 06:59, xxxxxxxx wrote:

You can group the virtual object under a virtual Null object for instance. Check the Atom object example in the SDK.

cheers,
Matthias

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

On 20/02/2008 at 00:17, xxxxxxxx wrote:

Thanks!!!!!!!!!!

Klaus

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

On 20/02/2008 at 01:25, xxxxxxxx wrote:

Help!!!!!

I go crazy. What is wrong?
I try to insert the tree and leafs under the Plugin, but it dont't work. Otherwise, if I convert it with 'c' to a polygon-object, it is right.

// this is the source-code:
BaseObject *CBaumPlugin::GetVirtualObjects(PluginObject *op, HierarchyHelp *hh)
{
BaseObject *ret = BaseObject::Alloc(Onull);

BaseObject *botree = tree.op;//pointer to the tree
BaseObject *boleafs = leaf.op;//pointer to the leafs
botree->SetName("tree");
boleafs->SetName("leafs");
botree->InsertUnderLast(ret);
boleafs->InsertUnderLast(ret);
// also tryed with: ret->InsertUnderLast(botree);

return ret;

}

what is wrong ?

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

On 20/02/2008 at 02:43, xxxxxxxx wrote:

I don't know maybe something wrong with your tree.op/leaf.op pointers? I tried a simple example with a cube and a sphere inserted under a null and this works fine.

> \> BaseObject \*AtomObject::GetVirtualObjects(PluginObject \*op, HierarchyHelp \*hh) \> { \>      // group all further objects with this null object \>      BaseObject \*main=NULL, \*cube=NULL, \*sphere=NULL; \> \>      main = BaseObject::Alloc(Onull); \>      if(!main) goto Error; \> \>      cube = BaseObject::Alloc(Ocube); \>      if(!cube) goto Error; \> \>      sphere = BaseObject::Alloc(Osphere); \>      if(!sphere) goto Error; \> \>      cube->SetPos(Vector(150,0,0)); \>      cube->InsertUnderLast(main); \> \>      sphere->SetPos(Vector(-150,0,0)); \>      sphere->InsertUnderLast(main); \> \>      return main; \> \> Error: \>      blDelete(main); \>      blDelete(cube); \>      blDelete(sphere); \>      return NULL; \> } \>

cheers,
Matthias

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

On 20/02/2008 at 08:42, xxxxxxxx wrote:

thank you,

exactly so i had made it.

But I see in the C4D-object-manager only my Plugin without sub-items.

But when I convert (with key 'c') ist, I see it.

???

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

On 20/02/2008 at 08:56, xxxxxxxx wrote:

All the objects you create are virtual! They are NOT visible in the OM. If you want to create the polygon objects in the OM, you better use a GeDialog gui (See gui sdk examples) where the user can hit a button to create the objects in the OM, but then you loose interactivity of a c4d object.

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

On 20/02/2008 at 09:16, xxxxxxxx wrote:

ooooooohhhh,

here you can test it by pressing 'c'.

http://www.kbuechner.gmxhome.de/Baum_Plugin.zip

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

On 20/02/2008 at 09:18, xxxxxxxx wrote:

As Katachi notes, virtual objects are 'virtual' - they only exist for the purpose of the deformations/generations/rendering processes and nothing more. Beyond that, they *really* don't exist in the document and there are restrictions on what can be done with/to them (see the C++ SDK Documentation).

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

On 20/02/2008 at 11:15, xxxxxxxx wrote:

thank you.

I have an idea: I don't need two objects.
To texture separately, it is enough to create two polygon-selections!
But I don't now again, how I can make it :-(

Klaus

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

On 22/02/2008 at 03:52, xxxxxxxx wrote:

Hello,

Plugin is almost ready.
Thanks for help.

Screenshot here:
http://www.kbuechner.gmxhome.de/BaumPlugiScreen.jpg

It is for C4D 9.1 but works likely in higher versions (now only Windows)

Download here:
http://www.kbuechner.gmxhome.de/Baum_Plugin.zip

To make leafs, you must insert a polygon-object under the Plugin (make it unvisible for renderer).
These texture-coordinaten were adopted.

The you must give the plugin one tree- and one leaf-texture.
Important: name the Selektion per texture "tree" and "leafs", these are hidden polygon-selektions.

in future:
- leaf-angle
- gravitation
- wind (you can simulate it now by animating "Biegung"(bend)
- tree withot middle-twig
- fitting the start-view to whole tree
- dimension-frame
- Mac-Version
- ????
- ????

Klaus
http://www.kbuechner.gmxhome.de

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

On 25/02/2008 at 06:29, xxxxxxxx wrote:

Hello,

something in the Baum-Plugin is new:

- gravitation für tree and leafs
- tree without middle-twig

Screenshot here:
http://www.kbuechner.gmxhome.de/BaumPlugiScreen.jpg

download here:
http://www.kbuechner.gmxhome.de/Baum_Plugin.zip

Klaus

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

On 28/02/2008 at 13:58, xxxxxxxx wrote:

Hello,

here is a new version of my baum-plugin.

Screenshot:
http://www.kbuechner.gmxhome.de/BaumPluginScreen.jpg

Download from my WebSite or directly:
http://www.kbuechner.gmxhome.de/Baum_Plugin.zip

In BaumPlugin_Manual.doc you can read how to use it.

Please write me error-informations or suggestions.

Thanks from Berlin,
Klaus
[email protected]

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

On 04/03/2008 at 04:03, xxxxxxxx wrote:

Hello,

new version of Baum-Plugin:

rising tree (Divx5) :
http://www.gfai.de/~buechner/Baum_Wachstum.avi

Screenshots:
http://www.kbuechner.gmxhome.de/BaumPluginScreen.jpg

or here:
http://www.gfai.de/~buechner/Apfelbaum.jpg

Download:
http://www.kbuechner.gmxhome.de/Baum_Plugin.zip

Please read BaumPlugin_Manual.doc.

Klaus
http://www.kbuechner.gmxhome.de

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

On 09/03/2008 at 10:28, xxxxxxxx wrote:

Hello,

Now you have more parameters for leafs.
Therefore you can also make something like fern.
look here:
http://www.gfai.de/~buechner/Baum_Wachstum.avi

Screenshots:
http://www.kbuechner.gmxhome.de/BaumPluginScreen.jpg
http://www.gfai.de/~buechner/Apfelbaum.jpg

Download:
http://www.kbuechner.gmxhome.de/Baum_Plugin.zip

Please copy Baum_Plugin-directory in your C4D-plugins-directory and read "BaumPlugin_Manual.doc"

Thanks,
Klaus
http://www.kbuechner.gmxhome.de