Baum3D
Übersicht

deCoucyBetreff: Baum3D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kennt jemand aus diesem kundigen Kreis das Programm " Baum3D" ? Wenn ja, was haltet ihr von diesem Baumgenerator ? Der Schöpfer dieses Programmes schrieb mir auf meine Fragen:
> 5. Ich bastele mit Blitz3D herum und erstelle Meshes, um sie in Szenen in diesem Programm zu verwenden. Mit Ihrem Programm könnte man doch sehr einfach schöne und recht "echte" Bäume und Pflanzen erstellen. Planen Sie eine einfache Exportfunktion, um die Bäume auch dahin zu exportieren (Format :*.3ds) ? Antwort: kann Blitz3D denn kein WRL lesen ? 3ds ist veraltet, kann z.B. nur 65000 Punkte speichern. Ein Beispielbild findet ihr: [Bitte nur Projektbilder in die Galerie. Den Rest im Archiv hochladen. YellowRider] |
||
![]() |
IronstormErstklassiger Contest-Veranstalter |
![]() Antworten mit Zitat ![]() |
---|---|---|
3ds und veraltet? Also komm ...
Ich würde eher Treemagik benutzen, dies tue ich selber und bin zufrieden. Damit hast du sehr viele Einstellungen die du beliebig verändern kannst. Dort kannst du auch in b3d und x Exportieren. MFG Ironstorm |
||
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich benutze TreeGen. Ich glaub, ich hab das von blitzbasic.com aus der Toolbox (oder wie das heißt.)
Nebenbei: würden 65000 Punkte denn nicht reichen für einen Computerspiele-Baum? o.O |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Baum Generator ![]() Code: [AUSKLAPPEN] Global eBaumLaubEntity=0 ;-------------------------------- BaumTest() End ;-------------------------------- Function BaumTest() ;--------------------------- Graphics3D 800,600,16,2 SetBuffer BackBuffer() Local camerap=CreatePivot() Local camera=CreateCamera(camerap) MoveEntity camerap,0,0,0 MoveEntity camera,0,0,-2500 CameraRange camera,1,20000 CameraClsColor camera,128,128,128 ;CameraClsColor camera,255,0,255 ;Magenta ;RotateEntity camerap,90,0,0 ;<- für 2D Bild von oben AmbientLight 64,64,64 Local light =CreateLight() LightRange light,10000 MoveEntity light,-5000,5000,5000 ;MoveEntity light,0,5000,0 ;<- für 2D Bild ;--------------------------- BaumNeu -800, 0,0 BaumNeu 800, 0,0 BaumNeu 0, 0,800 ;BaumNeu 0, 0,0 Local myTree=BaumNeu(0,0,0) PointEntity camera,camerap ;--------------------------- Local mWireFrame=0 While Not KeyHit(1) If KeyDown(203) Then TurnEntity camerap,0, 1,0 ;Links If KeyDown(205) Then TurnEntity camerap,0,-1,0 ;Rechts If KeyHit(15) Then ;TAB mWireFrame=1-mWireFrame: WireFrame mWireFrame EndIf If KeyHit(57) ;Space TurnEntity camerap,-20,0,0 TurnEntity camerap,0,45,0 EndIf If KeyDown(200) Then MoveEntity camera,0,5,0 PointEntity camera,camerap EndIf If KeyDown(208) Then MoveEntity camera,0,-5,0 PointEntity camera,camerap EndIf UpdateWorld RenderWorld ;für Ausgabe Texturegröße bei Bild von oben ;Color 255,255,0 ;Rect GraphicsWidth()/2-64,GraphicsHeight()/2-64,128,128,0 Color 255,255,0 Text 0,0,"TrisRendered " + TrisRendered() Flip Wend ;hier kann man ein Bild von oben für 2D erzeugen ;RenderWorld ;Local img ;img=CreateImage(128,128) ;GrabImage img,GraphicsWidth()/2-64,GraphicsHeight()/2-64 ;SaveBuffer ImageBuffer(img),"TreeTop.bmp" ;FreeImage img ;AmbientLight 0,0,0 ;LightRange light,1 ;TurnEntity camerap,-20,0,0 ;TurnEntity camerap,0,45,0 ;RenderWorld ;img=CreateImage(128,128) ;GrabImage img,GraphicsWidth()/2-32,GraphicsHeight()/2-32 ;SaveBuffer ImageBuffer(img),"TreeShadow.bmp" ;FreeImage img End Function ;-------------------------------- Function BaumNeu(px,py,pz) ;---------------------------------------- Wiggle_Flag=2 Branches_On_End_Flag=1 Number_Of_Large_Branches=5 Number_Of_Medium_Branches=3 Number_Of_Small_Branches=3 Large_Branch_Minimum_Angle#=10 Large_Branch_Maximum_Angle#=60 Medium_Branch_Minimum_Angle#=20 Medium_Branch_Maximum_Angle#=30 Small_Branch_Minimum_Angle#=20 Small_Branch_Maximum_Angle#=40 Tree_Trunk_Size#=400 Large_Branch_Size_Min#=200 Large_Branch_Size_Max#=250 Medium_Branch_Size_Min#=100 Medium_Branch_Size_Max#=250 Small_Branch_Size_Min#=100 Small_Branch_Size_Max#=150 Trunk_seg=8 LBranch_seg=4 MBranch_seg=4 SBranch_seg=4 Trunk_Big_Dia#=60 Trunk_Small_Dia#=40 LBranch_Big_Dia#=35 LBranch_Small_Dia#=20 MBranch_Big_Dia#=20 MBranch_Small_Dia#=10 SBranch_Big_Dia#=10 SBranch_Small_Dia#=1 ;---------------------------------------- ;Branches_On_End_Flag=1 sieht besser aus L_Bmin#=Large_Branch_Minimum_Angle# L_Bmax#=Large_Branch_Maximum_Angle# - Large_Branch_Minimum_Angle# M_Bmin#=Medium_Branch_Minimum_Angle# M_Bmax#=Medium_Branch_Maximum_Angle# - Medium_Branch_Minimum_Angle# S_Bmin#=Small_Branch_Minimum_Angle# S_Bmax#=Small_Branch_Maximum_Angle# - Small_Branch_Minimum_Angle# Large_Branch_Size_Range#=Large_Branch_Size_Max# - Large_Branch_Size_Min# Medium_Branch_Size_Range#=Medium_Branch_Size_Max# - Medium_Branch_Size_Min# Small_Branch_Size_Range#=Small_Branch_Size_Max# - Small_Branch_Size_Min# Local StammTx=LoadTexture("Rinde.bmp") ScaleTexture StammTx,0.5,0.5 lbranchtex=LoadTexture("Rinde.bmp") mbranchtex=lbranchtex sbranchtex=lbranchtex If eBaumLaubEntity=0 Then eBaumLaubEntity=BaumLaubEntity() ; Make the Tree Trunk ; Note: the Make_Branch function puts a sphere on the end of the branch to 'smooth' ; up the construction. If you want to save polys, change all calls of Make_Branch ; below to Make_Branch_Nosphere Trunk=Make_Branch(Tree_Trunk_Size#,Trunk_Big_Dia#,Trunk_Small_Dia#,Trunk_seg,StammTx,1) A=0 While A < Number_Of_Large_Branches ; Make one large branch. This_Large_Branch_Size#=( Rnd(0,1) * Large_Branch_Size_Range# ) + Large_Branch_Size_Min# LBranch=Make_Branch(This_Large_Branch_Size#,LBranch_Big_Dia#,LBranch_Small_Dia#,LBranch_seg,lbranchtex,0) ;EntityTexture LBranch,lbranchtex ; Loop To put medium branches on that large branch. B=0 While B < Number_Of_Medium_Branches This_Medium_Branch_Size#=( Rnd(0,1) * Medium_Branch_Size_Range# ) + Medium_Branch_Size_Min# MBranch=Make_Branch(This_Medium_Branch_Size#,MBranch_Big_Dia#,MBranch_Small_Dia#,MBranch_seg,mbranchtex,0) EntityParent MBranch,LBranch ;EntityTexture MBranch,mbranchtex ; Loop To put small branches on that medium branch. C=0 While C < Number_Of_Small_Branches This_Small_Branch_Size#=( Rnd(0,1) * Small_Branch_Size_Range# ) + Small_Branch_Size_Min# SBranch=Make_Branch(This_Small_Branch_Size#,SBranch_Big_Dia#,SBranch_Small_Dia#,SBranch_seg,sbranchtex,0) EntityParent SBranch,MBranch ;EntityTexture SBranch,sbranchtex ; The leaf at the End of the small branch. BaumLaub eBaumLaubEntity,0,This_Small_Branch_Size#,0,SBranch ; First, spin the vertical branch To a random angle. ; The branch doesn't really change - this actually ; just spins the leaf around! SpinAngle#=(Rnd(0,1)*360) TurnEntity SBranch,0,spinangle,0,True ; Now, tilt it over a little. BranchAngle=(Rnd(0,1)*S_Bmax)+S_Bmin TurnEntity SBranch,0,0,BranchAngle,True ; Rotate it into place, with a little random wiggle. Wiggle=(Rnd(0,1)*20) - 10 If Wiggle_Flag=2 Wiggle=0 EndIf C2=( 360 / Number_Of_Small_Branches ) * C C2=C2 + Wiggle TurnEntity SBranch,0,C2,0,True ; Move it up To the top of the Medium_Branch. ; If flag is "off", Then move To the Next spot on branch. TEMP_HEIGHT#=This_Medium_Branch_Size#; If ( Branches_On_End_Flag=2 ) TEMP_HEIGHT#=This_Medium_Branch_Size# - ((This_Medium_Branch_Size# / Number_Of_Small_Branches) * C) EndIf PositionEntity SBranch,0,TEMP_HEIGHT#,0 C=C + 1 Wend BranchAngle=(Rnd(0,1)*M_Bmax)+M_Bmin TurnEntity MBranch,0,0,BranchAngle,True Wiggle=(Rnd(0,1)*20) - 10 If ( Wiggle_Flag=2 ) Wiggle=0 EndIf B2=( 360 / Number_Of_Medium_Branches ) * B B2=B2 + Wiggle TurnEntity MBranch,0,B2,0,True ; Move the Medium_Branch up To the top of the Large_Branch. ; If flag is "off", Then move To the Next spot on branch. TEMP_HEIGHT#=This_Large_Branch_Size# If ( Branches_On_End_Flag=2 ) TEMP_HEIGHT#=This_Large_Branch_Size# - ((This_Large_Branch_Size# / Number_Of_Medium_Branches)*B) EndIf PositionEntity MBranch,0,TEMP_HEIGHT#,0 B=B + 1 Wend BranchAngle=(Rnd(0,1)*L_Bmax)+L_Bmin TurnEntity LBranch,0,0,BranchAngle,True Wiggle=(Rnd(0,1)*20) - 10 If Wiggle_Flag=2 Wiggle=0 EndIf A2=( 360 / Number_Of_Large_Branches ) * A A2=A2 + Wiggle TurnEntity LBranch,0,A2,0,True ; Move the Large_Branch up To the top of the Tree_Trunk. ; If flag is "off", Then move To the Next spot on trunk. ; These are spaced differently than the other branches - they ; start about 3/4 of the way up the trunk. TEMP_HEIGHT#=Tree_Trunk_Size# If Branches_On_End_Flag=2 TEMP_HEIGHT#=Tree_Trunk_Size# - ((Tree_Trunk_Size# / Number_Of_Large_Branches) * A/4); EndIf PositionEntity LBranch,0,TEMP_HEIGHT#,0 A=A + 1 EntityParent LBranch,Trunk Wend PositionEntity Trunk,px,py,pz Return Trunk End Function ;############################################################################################# Function BaumLaubEntity() ;Einmal erzeugen und dann kopieren ! ;Einfaches Viereck mit Texture Local tl=LoadTexture("Laub2.bmp",2+4+16+32) Local m=CreateMesh() Local s=CreateSurface(m) Local v1=AddVertex(s,-1,1.5,0,0,0) ;Links Oben Local v2=AddVertex(s, 1,1.5,0,1,0) ;Rechts Oben Local v3=AddVertex(s, 1,-.5,0,1,1) ;Rechts Unten Local v4=AddVertex(s,-1,-.5,0,0,1) ;Links Unten ;Normale fürs Licht VertexNormal s,v1,0,0,-1 VertexNormal s,v2,0,0,-1 VertexNormal s,v3,0,0,-1 VertexNormal s,v4,0,0,-1 ;Bischen transparent VertexColor s,v1,255,255,255,0.75 VertexColor s,v2,255,255,255,0.75 VertexColor s,v3,255,255,255,0.75 VertexColor s,v4,255,255,255,0.75 ;Zwei Dreiecke AddTriangle s,v1,v2,v3 AddTriangle s,v1,v3,v4 EntityFX m,1+2+16+32 ;+32;VertexColors Backface AplhaBlending EntityTexture m,tl HideEntity m Return m End Function ;############################################################################################# Function BaumLaub(Entity,px,py,pz,parent) ;Am Ende des Zweiges kommt Laub :-) Local m=CopyEntity(Entity) Local sc#=Rnd(150,200) ScaleEntity m,sc,sc,1 PositionEntity m,px,py,pz EntityParent m,parent End Function ;############################################################################################# Function Make_Branch(branch_size#,Big_Dia#,Small_Dia#,branch_seg,texture,Kugel) ; Now create some branches. ;Mit Kugel dazwischen sieht besser aus branch=MyCreateCylinder(branch_seg,0,0,0,0,Big_Dia#,Small_Dia#,branch_size#) EntityTexture branch,texture If Kugel=1 Then ball=CreateSphere(branch_seg/2,branch) EntityTexture ball,texture ScaleMesh ball,Small_Dia#,Small_Dia#,Small_Dia# PositionEntity ball,0,branch_size,0 EndIf Return branch End Function ;#################################################################################################### Function MyCreateCylinder(seg=8,parent=0,px#=0,py#=0,pz#=0,rad1#=1,rad2#=.75,height#=2) ; seg Anzahl Segmente ; parent wenn es irgend wo dran hängen soll ; px# Position ; py# ; pz# ; rad1# Radius unten vom Cylinder ; rad2# Radius oben vom Cylinder ; height# gesamt höhe des Cylinders If seg<3 Then seg=3 If seg>36 Then seg=36 Local m=CreateMesh() Local s=CreateSurface(m) Local angle=0 ; Set our initial starting angle Local inc=360 / seg Local u# ;Eckpunkte erzeugen While angle < 360 x1#=rad2*Cos(angle) z1#=rad2*Sin(angle) x2#=rad1*Cos(angle) z2#=rad1*Sin(angle) u=angle/360.0 v1=AddVertex (s,x1,height,z1,u,0) v2=AddVertex (s,x2, 0,z2,u,1) x1#=rad2*Cos(angle+inc) z1#=rad2*Sin(angle+inc) x2#=rad1*Cos(angle+inc) z2#=rad1*Sin(angle+inc) u=(angle+inc)/360.0 v3=AddVertex (s,x1,height,z1,u,0) v4=AddVertex (s,x2, 0,z2,u,1) AddTriangle s,v1,v3,v4 AddTriangle s,v1,v4,v2 angle=angle+inc Wend UpdateNormals m ;Oberflächen Normalen wegen Licht erzeugen PositionEntity m,px#,py#,pz# If parent > 0 Then EntityParent m,parent Return m End Function Function AddMeshToSurface(SrcMesh, DestMesh, DestSurface, Voffsetx#=0, Voffsety#=0, Voffsetz#=0) ;MR 18.10.2003 ;Kein Anim Mesh weil da muß man die Childs durch gehen ! ;Vierecke müssen erst in Dreiecke gewandelt werden ! (Triangulieren der Vierecke !) ;Quellobjekt darf nicht gedreht sein , bzw. wird hier nicht berücksichtig ! ;Quellobjekt Achsen sind also gleich Weltachsen ... Local vi,vin Local vx#,vy#,vz# Local vu#,vv#,vw# Local vnx#,vny#,vnz# Local vr#,vg#,vb# If CountSurfaces(SrcMesh) = 0 Then DebugLog "ERR: AddMeshToSurface CountSurfaces(SrcMesh) = 0" Return 0 EndIf ;Alle Eckpunkte von Quelloberfläche bei Zieloberfläche neu anlegen :-) Local s For s=1 To CountSurfaces(SrcMesh) Local ss = GetSurface(SrcMesh, s) lv=CountVertices(DestSurface) ;vorher merken ! For vi = 0 To CountVertices(ss)-1 vx# = VertexX (ss, vi) vy# = VertexY (ss, vi) vz# = VertexZ (ss, vi) vu# = VertexU (ss, vi) vv# = VertexV (ss, vi) vw# = VertexW (ss, vi) vnx# = VertexNX(ss, vi) vny# = VertexNY(ss, vi) vnz# = VertexNZ(ss, vi) vr = VertexRed (ss, vi) vg = VertexGreen(ss, vi) vb = VertexBlue (ss, vi) vin=AddVertex(DestSurface, vx#+Voffsetx#, vy#+Voffsety#, vz#+Voffsetz#, vu#, vv#, vw#) VertexNormal DestSurface, vin, vnx#, vny#, vnz# VertexColor DestSurface, vin, Vr, Vg, Vb Next ;vertices ;---------------------------------------------------------------------------------------- ;Alle Dreiecke von Quelloberfläche bei Zieloberfläche neu anlegen :-) Local v0,v1,v2 For ti=0 To CountTriangles(ss)-1 v0 = TriangleVertex(ss, ti, 0) v1 = TriangleVertex(ss, ti, 1) v2 = TriangleVertex(ss, ti, 2) AddTriangle(DestSurface, V0+LV, V1+LV, V2+LV) Next Next ;alle Surfaces von Quell Objekt Return True End Function |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
3DS ist tatsächlich veraltet, wurde Seitens der "Erfinder" (3DS Max) schon vor Jahren durch ASE ersetzt.
Aber seine Antwort zeigt recht deutlich, dass du dir das Programm gleich in die Haare schmieren kannst. Zitat: "Kann nur 65000 Punkte speichern" Das sind schon etwa 4-10x soviele wie du überhaupt haben solltest im Maximum auf einem Objekt. Und wenns VRML exportieren kann: gibt einige Programme die das nach "Game Format" konvertieren können ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
deCoucy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Herzlichen Dank an Markus2 für sein Programm. Jetzt muß ich nur noch herausfinden, wie ich die so erstellten Meshes abspeichern und in anderen Programmen verwenden kann. Mal schauen, wielange ich dafür brauche. Auch das Abspeichern als Bild habe ich wohl noch nicht optimal gelöst: Ich hab es einfach mit Irfanview photographiert. Heute hab ich schonmal herausgefunden, dass ich mit einer veralteten Version von Blitz3D gearbeitet habe und das Progrämmelchen deshalb nicht laufen wollte.
und auch an Dreamora für den Hinweis: Zitat: dass du dir das Programm gleich in die Haare schmieren kannst
Das mach ich aber lieber nicht, weil ich nicht mehr so furchtbar viele Haare mehr habe ![]() Eine mit dem Programm von Markus2 erstellte Baumgruppe könnt ihr euch hier anschauen https://www.blitzforum.de/uplo...d=859[url] |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@deCoucy
jup, gib mal deine eMail dann schicke ich dir Texturen dafür weil mit dem Blatt sieht nicht wirklich richtig aus ![]() EDIT: das Beispiel war als Include gedacht muß nur BaumTest() und End auskommentieren dann brauchste die Bäume nicht speichern , also wenn du mit Programm was in BB3D meinst . Und du solltest nur ein paar Bäume erstellen und die mit CopyEntity vervielfältigen . Als Texture speichern geht auch , dafür hatte ich ein paar stellen auskommentiert . In 2D könnten die Bäume dann so aussehen . http://home.kamp.net/home/r155...ike400.jpg |
||
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich find die blätter haben was^^
@markus2 hast du viele texturen um bäume zu machen? kannst mir dann vllt auch was schicken? |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@biggicekey
ne leider wenig , eigentlich nur Rinde und Laub aber die sind nicht der Rede Wert . Könnte man auch schnell selber machen . |
||
deCoucy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@biggicekey
Ich habe angefangen Baumstämme und Blätter zu photographieren. Zwar habe ich zwar noch nicht viel (Buche, Eiche, Birke etc) werde meine Sammlung aber aufstocken. Mein Ziel ist möglichst realistische und erkennbare Bäume zu produzieren, die zunächst durch die Eigenheit ihrer Blätter, Stämme und Früchte bestimmt sind. (Also z.B.: Eichenstamm, Eichenblatt und Eichel)Wenn meine Kenntnisse (auch im Programmieren und Modellieren) besser werden, möchte ich die Baumbestimmung durch Ast- und Stammkrümmungen und ide besonderen Eigenheiten des Wurzelwerks ergänzen. Wenn Du was bestimmtes brauchst, schreib mich einfach an. Ich schick es Dir, wenn es schon in meiner Sammlung ist. |
||
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falls es noch jemanden interessiert:
TreeGen ist nicht schlecht: ein Singlesurface-Baumsystem. Die Bäume lassen sich entweder im dezugehörigen Editor oder direkt im eigenen Quelltext erstellen. http://www.blitzbasic.com/tool...p?tool=147 |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group