jME classes TestImposterNode Billboard SkyBox TestMipMaps ColorMipMapGenerator??? See TestMipMaps.java. http://graphics.cs.yale.edu/julie/pubs/bc03.pdf FILE SIZES for my first Oak Tree (Sizes do not include the texture image files, but those are insignificant). 26M .blend 133M -jme.xml 39M .jme Get a 2D image of the tree species to use as 2D template. At least the Trunk-generation step creates Subsurf, so remember to apply modifiers before exporting. I don't know what is going on, perhaps the bezier script really does re-create EVERYTHING every step (but if so, the adjustment steps recommended in the tutorial will be useless), but (at least in some cases), you must leave settings for previous steps active in the script interface when doing following steps. TODO: There is some problem with my non-square image map texture. Model Trunk Tue Sep 22 16:05:13 EDT 2009 +Z forward perspective BG Image setup For oaktree2d.png, set Size=12, X Offset=-2, Y Offset=12. Manually change the file path to relative. Start it with "//". Place a BZ curve along main trunk. Name the curve Object, TrunkCurveObj and the curve itself TrunkCurve. Turn off Back /Front, turn on 3D, set bevel depth to .17 and bevel res to 1. This makes a tube. OBJ mode RotZ = 90. CTRL+"a", Rot to ObData. OBJ mode "gy" to move the curve up so that the bottom of the first segment is ~ .3m below the ground. (In EDIT mode, the initial segment will have a "line" at the top and at the bottom, where each such line has 2 "Handles" and a "Control" in the middle). EDIT mode "a" (select-ALL) and "r" to graphically rotate that first segment if the model has a curve at the bottom of the trunk. RMB the 2 end lines and "r" to straighten them too. Make central trunk in Edit mode. RMB the top-most Control and CTRL+LMB to add more "handles". Repeat. IF you don't do anything else inbetween, you can just keep CTRL+LMBing, since that action automatically selects the new object for the next CTRL+LMB. Make sure to add handles where you anticipate bends in the forward/reverse direction also. After all "created", go back and select the central point of each Handle in turn, "r" rotating to smoothly transition from adjoining segments. STOP WHEN YOU REACH TRUNK THICKNESS OF OUR Branch MODEL. Smooth the trunk tranch radius. ALT+"s" to scale each line segment individually. (The Smooth Radius functions sucks). Make major trunk forks/branches. Add the new Curves in EDIT mode so they will add to the single TrunkCurve. Model Branches (not twigs). Select some handles from trunk and "D". Position the branch root "CLOSE" to the trunk (do not overlap). Make more points by selecting pairs of handles and subdividing. Move handles to reshape the branch. When done with each branch, select all handles and "W" smooth Radius. Model Twigs Create cube, subsurf Level to 3 (vertex density will determine how many twigs will get generated). Scale. This specifies "twig boundaries". "D" and scale to assign all areas where to create twigs. Trees often have few twigs off of the centeral trunk except for towards the top of the tree. (Be careful about overlapping globs). Use "h" and ALT+"h" to temporarily hide globs to see position of branches inside (or Wireframe display mode). Join all balls into one with "j", setting distinctive Obj name. Dup it to another layer. Apply subsurf. Use sculpt tool to change the spheres into irregular shapes. Use Draw, Add, Airbrush; then Add->Sub According to tutorial, the purpose here is simply to make the shapes irregular, but it seems we could use this to reduce the twig population near the central trunk. Enable Wireframe display mode to see the position of branches inside. (Wireframe and occlusion mode are incompatible, but the Sculpt tool always uses exclusion so you are ok). !TRY! Not sure will work. Only purpose here it to keep the bark direction lengthwise along branches. ************ TODO: Try UV mapping the trunk without the twigs. Generate UVs to open that panel. Scale U = 2 IM = RELATIVE PATH (do not prefix with "//"). Generate Material to open that panel. All toggles in this panel on. Generate from Selection. Set Mat Index #1 to a new Trunk Color index. Create new Mat Index #2 and set the Mat to the auto-generated tex mat. Move all faces to Mat Index #2 ************ Texture the bark. Create a BarkColor mat Spec 0. Create new Mat Index. Create a BarkTexture mat for Mat Index #2. http://www.sharecg.com/v/2974/Texture/Tileable-bark-texture (actually http://www.sharecg.com/get_file.php?upload_file_id=1359 ). Tex Fac on. Spec 0. Move all current faces to Index #2 (hoping that twigs will be added to #1). Generate trunk+branch+twig mesh Sel curve then pulldown Scripts / Wizards / Tree from Curves Generate From Selection. This generates the trunk mesh from the curve. (Makes it a child of the curve. Don't know yet if/when save to eliminate that parenting). Move the curve out of the way into another layer. Fill Twigs to open the fill-twigs panel. OB Bound: Name of our twig glob object. Fill Twigs, Generations (branchiness) -> 6, Randomize scale 1 (max.). [Randomize of 0 will generate all twigs will be max length] Generate from selection. This creates a low-poly trunk mesh with Subsurf Modifier. De-Use the BG Image since we don't need it any more. Model Leaf. Make a plane parallel in same coord directions as final leaves will be (not exactly. XY plane if still modeling with tree top to +Z). Origin to bottom center (when facing from top) (easier to do before manual repositioning). UV Unwrap. Name the layer LeafLayer. Get leaf texture from cgtextures.com. Use transparency. (Got my oak leaf image from http://www.gvnc.org/images/White-oak-leaf.jpg ) With tree mesh object selected, Generate leaves. Object -> "LeafObj" (or whatever you named it). Size -> .3 Density .1 U Scale default 4 Generate from Selection. Edit mode with original leaf Obj (which the script will have rotated), SEL all and CTL+rotate 90 counter-clockwise. In Object mode same leaf Obj RotX 90. The plane is used for runtime plane sizes so resizes all leaves, I think. Trunk bumpiness via Displacement map. Weight paint. Disable the subsurf. Disable Subsurf modifier by disabling + toggle in Subsurf Modifier header. Weight 1. Opacity .5. Spray. Paint widest trunk to red, thinnest trunk (and all twigs) blue. Name the VG that the Weight Painter created. Create texture but set it DISABLED in the Texture Channel list. Type Clouds, Noise size .3, Noise Depth 0. Add a Displace Modifier. (Can also do 2 displacement textures). Text texture name to the Cloud Tex. Strength -> .1 (but adjust). VGroup to name of weight paint group created above. RENDER (scalar image) TO FILE = F3.