Community 3D Project
Blitz3D Forums/Blitz3D Programming/Community 3D Project
| ||
Hey, one of the "killer" 3d applications out there is 3d Studio Max, which at retail, costs about US$3500. Any chance that we, the Blitz3D community, could do an open-source 3d Modeller for our own .b3d needs? Naturally, as an open-source community project, we could combine the best and brightest ideas of our collective-consciousness, so to speak, to implement whatever functions we want/need. It may not come out as rigorous and thorough as 3dS Max, but it wouldn't need to be, would it? How about it? |
| ||
www.blender.org btw, this is the beginners forum. |
| ||
Two points. First, oops, quite right, this is the Beginners. Sorry. Second, the Blender looks promising. Thanks for the info. |
| ||
It would be good to create a simple modeller. I'm working on a multi-surface, multi-mesh, .b3d save function for my editor. So, i would'nt mind contributing that, when it's finished. |
| ||
Blender is good but has a very complicated GUI and almost to much funtionality for common low polly modeling. At least in my eyes. I wouldn't mind a strictly blitz game modeling program. |
| ||
almost to much funtionality Are you on drugs?I want less functionality, damnit! |
| ||
I like Wings3D and it's free. You can export .3ds and make a b3d of it with decorator. |
| ||
Hi Sir Gak, How about host a web site for this open project special to Blitz3D? (free hosting is ok) 1. name of the project 2. wish list 3. progress This is done so that we know which part we could participate. Sammy :) |
| ||
I know this thread is on the Beginners forum, so as an aside..... **MODERATORr** can this be switched over to the Blitz3D Programmers forum? Blender seems nice, but my original thought was to make it Blitz3D specific. Happy Sammy: I like the idea of hosting a web site for this. I have a hosting service I am paying for anyway, and adding another site would not be any extra cost. But, I'm not really proficient at HTML and so-on (my other site was sorta handed over to me, without my having any need to program it). UPDATE: I have just secured 2 years for the domain sirgak.com from go-daddy for hosting the project. I will contact my hosting service shortly to get it hosted. I wil need to get some html on it, etc. Suggestions/help will be greatly appreciated. Thanks. Just think, folks: we can make this application freely available to all in the Blitz 3D community, being specifically developed for our own community purposes. |
| ||
Far more useful to keep BlitzMax3D in mind while developing it, rather than to make it Blitz3D specific imo... Might be an idea to get in touch with BRL and ask if there's going to be any changes to the .b3d format for Max3D... But yeah it's a good idea... to have a free, fully functional .b3d modelor \ animator ready in time for the Max3D launch would be lovely :) |
| ||
personally i agree with jams, i would ethier wait till max3d is released and develop it on max (it would be much easier IMO) or find out whats going to change(if any) with b3d format. |
| ||
Good points. However, I hope to keep the program very modular (and very commented so people can understand every section). I figure modularity will help keep the program both very non-hardwired and very open-sourced. Example. Someone sees a function, and realizes a better/easier way to do the job. He submits that function version, we fit it in, and the program grows ever better and functional for everyone. Credit, of course, can be given to everyone who contributes to it. (Nothing like the satisfaction of seeing your name praised and admired, right?) As for matching it to max3d, well, the very modularity of this program ought to make it cross-transferrable to max3d, I should think, when the time comes. I guess I could check with BRL on that point. As for now, I'm working on some really basic 3d stuff. Setting up 4 cameras and 4 cameraviewports, labelling them Left, Front, Top, and Perspective. Everybody OK with these labels? The Left, Front and Top will be, of course, orthogonal, and the Perspective speaks for itself. Then, I'm working on creating a button menu to the right side (hey, I'm right-handed), with intuitively easy icons. For example, icons for creating primitives, such as cone, cube, etc ., will show Cone, Cube, etc., icons.] When I get that basic stuff done, I'll post it here. Then, when the website www.sirgak.com gets functional, I'll begin posting it there. I'm deliberately trying to make the program not dependent on having to load external files (other than your projects, of course). To that end, for instance, I created within the program a mouse cursor, using basic color and line commands on an Imagebuffer. Later! |
| ||
This project sounds very interesting.:) Example. Someone sees a function, and realizes a better/easier way to do the job. He submits that function version, we fit it in, and the program grows ever better and functional for everyone. That sounds very good :D - for a open source project to be really successful, it's very important to keep it easy for anyone to improve/revise/add to the program. As for now, I'm working on some really basic 3d stuff. Setting up 4 cameras and 4 cameraviewports, labelling them Left, Front, Top, and Perspective. Everybody OK with these labels? The Left, Front and Top will be, of course, orthogonal, and the Perspective speaks for itself. Then, I'm working on creating a button menu to the right side (hey, I'm right-handed), with intuitively easy icons. For example, icons for creating primitives, such as cone, cube, etc ., will show Cone, Cube, etc., icons.] I think an interface library should be decided on/created first (maybe something like BlitzUI). Also, instead of rendering the 3D graphics every every frame like a game, modelers usually only render when the view moves or something changes. This way it will not only conserve CPU, but the 2D GUI could be drawn independantly and it will not become sluggish when modeling a complex model (I hate sluggish GUIs :) |
| ||
I think an interface library should be decided on/created first (maybe something like BlitzUI). Also, instead of rendering the 3D graphics every every frame like a game, modelers usually only render when the view moves or something changes. This way it will not only conserve CPU, but the 2D GUI could be drawn independantly and it will not become sluggish when modeling a complex model (I hate sluggish GUIs :) Agreed - tho instead of when the user moves/chages a 3d object i think it would be just as fast if you only redraw 3d when the user is over a viewport/ or a viewport is active it'll probally be a lot easier to code. tho i', sure this is what you implied. |
| ||
having a toolbar on the right imo is a bad idea. I use Lightwave for all of my work, and one of the first things you learn is to memorize the hotkeys so that you don't have to go looking through the toolbar for everything. The idea is that you will be doing most of your work in the view ports and not in the toolbar. I rarely go to the toolbar except to get primitives, and then some specific functions in layout view. Since you do most of the work in the viewport, it would be better to have it on the left, which is the area that is generally in focus. I agree with you John, I believe this is what lightwave does (you notice this when you are moving windows around and it doesn't update immediately). |
| ||
Hi all, The following links may be useful: (1) Xworld (a closed source,discontinued project for Blitz3D) http://home.kamp.net/home/r15502/blitz/basic/ (2)MeshEditor (with Blitz3D source,special B3DX format, in 2003) http://www.freewebs.com/kefir Sammy :) |
| ||
Erm... You need to switch links! Kefir made X-World (which is great by the way! As a level builder, not modeller). |
| ||
Thanks for all the great feedback. This all started in my head when I looked at trying my hand at 3D programming, and began exploring the options out there for 3d modeling programs. I'm still working on the 4 basic viewports (have 3 out of the 4 ready). Hope to post the initial results soon. Yes, this is to be a free modeling program, available to anyone in the Blitz community as a tool. Since we, the community, are writing it, we can put into it the features that we the community want. It doesn't have to be the be-all-end-all of modeling programs like some that cost $3500.00--just cool enough and useful enough for us to actually write programs using stuff we created with our community program. As I start posting the code, I EXPECT disagreements. After all, I can't think of everything, nor do I expect that everything I think of will be the best and most effeicient of doing things. The only thing I'll ask, is that we each give our best shot at it. This could be the beginning of a fun and useful project. |
| ||
Here are the humble beginnings of the BlitzModeler project. It's not much, yet, but it shows the four viewports and a sample cone.Graphics3D 800,600 light=CreateLight() ;create cursor arrow by colors and lines (i.e no external file to load) cursor=CreateImage(11,19) SetBuffer ImageBuffer(cursor) Color 128,128,128: Line 0,1,0,13: Line 4,12,4,13: Line 5,14,5,15: Line 6,16,6,17 Color 192,192,192: Line 1,2,1,12: Line 2,3,2,11: Line 3,4,3,10: Line 4,5,4,9 Line 5,6,5,9: Line 6,7,6,9: Line 7,8,7,9: Line 7,14,7,17: Plot 5,11 Line 6,12,6,13: Plot 8,9: Line 8,16,8,17 Color 255,255,255: Line 1,4,1,11: Line 2,6,2,10: Line 4,11,7,16: Line 3,8,3,9 ;initially, to have something to display texgrid=CreateTexture(256,256) SetBuffer TextureBuffer(texgrid) Color 255,255,255 For loopx=0 To 256 Step 16 Line loopx,0,loopx,256 Next For loopy=0 To 256 Step 16 Line 0,loopy,256,loopy Next cube=CreateCone() PositionEntity cube,0,0,5 EntityTexture cube,texgrid ;end of something to display SetBuffer BackBuffer() Const vwidth=300, vheight=300 ;sizes for the viewports Const bwidth=32,bheight=32 Function vportrects();draw 4 white boxes for 4 viewports Color 255,255,255 For loopx=0 To vwidth Step vwidth For loopy=0 To vheight Step vheight Rect loopx,loopy,vwidth,vheight,False Next Next End Function Function buttons() Color 128,128,128 For loopx=0 To 4*(bwidth+4) Step (bwidth+4) Rect loopx+vwidth*2+4,vheight+4,bwidth,bheight,True Next End Function ;create 4 pivots for 4 cameras, for 4 viewports pcamL=CreatePivot():camL=CreateCamera(pcamL);Left orthogonal viewport CameraViewport camL,1,1,vwidth-2,vheight-2 ;upper left CameraProjMode camL,2: CameraZoom camL,.5 PositionEntity pcamL,-10,0,5: TurnEntity pcamL,0,-90,0 pcamF=CreatePivot():camF=CreateCamera(pcamR);Front orthogonal Viewport CameraViewport camF,vwidth+1,1,vwidth-2,vheight-2 ;upper right CameraProjMode camF,2: CameraZoom camF,.5 pcamT=CreatePivot():camT=CreateCamera(pcamT);Top orthogonal viewport CameraViewport camT,1,vheight+1,vwidth-2,vheight-2 ;lower left CameraProjMode camT,2: CameraZoom camT,.5 PositionEntity camT,0,10,5:TurnEntity camT,90,0,0 pcamP=CreatePivot():camP=CreateCamera(pcamP);Perspective viewport CameraViewport camP,vwidth+1,vheight+1,vwidth-2,vheight-2;lower right CameraProjMode camP,1:CameraZoom camP,2 While Not KeyHit(1) Cls vportrects() UpdateWorld RenderWorld Text 2,2,"Left":Text vwidth+2,2,"Front" Text 2,vheight+2,"Top":Text vwidth+2,vheight+2,"Perspective" buttons() DrawImage cursor,MouseX(),MouseY() Flip Wend End Comments/insights are appreciated. |
| ||
I modified your code a bit so that it would be easyer to change the angle of viewports, and set new custom view ports. Also it will have the capability to display a different number of ports that can be resized. I put the toolbar on its own image buffer so you can draw on it reletive to its location, and not the rest of the screen. This also enabled me to remove the cls command you had in there.Graphics3D 800,600 HidePointer() ; The center of the world, just for reference center = CreatePivot() light=CreateLight() ;create cursor arrow by colors and lines (i.e no external file to load) cursor=CreateImage(11,19) SetBuffer ImageBuffer(cursor) Color 128,128,128: Line 0,1,0,13: Line 4,12,4,13: Line 5,14,5,15: Line 6,16,6,17 Color 192,192,192: Line 1,2,1,12: Line 2,3,2,11: Line 3,4,3,10: Line 4,5,4,9 Line 5,6,5,9: Line 6,7,6,9: Line 7,8,7,9: Line 7,14,7,17: Plot 5,11 Line 6,12,6,13: Plot 8,9: Line 8,16,8,17 Color 255,255,255: Line 1,4,1,11: Line 2,6,2,10: Line 4,11,7,16: Line 3,8,3,9 ;initially, to have something to display texgrid=CreateTexture(256,256) SetBuffer TextureBuffer(texgrid) Color 255,255,255 For loopx=0 To 256 Step 16 Line loopx,0,loopx,256 Next For loopy=0 To 256 Step 16 Line 0,loopy,256,loopy Next cube=CreateCone() PositionEntity cube,0,0,0 EntityTexture cube,texgrid ;end of something to display SetBuffer BackBuffer() ; Type VCam ; a Viewport Camera Type VCam Field cam,piv ; the actual camera entity and its pivot Field ortho% ; 1 if persp, 2 if ortho Field ID% ; the ID number of the camera Field name$ ; the direction that the camera is facing, will be used later do show the ; available cameras. This is useful because you can then make user-defined cameras Field locked% ; boolean value to tell whether you can turn the camera Or If you can only pan it End Type ; Function VCam( name$, ortho%, pitch#, yaw#, roll#, zoom#, locked% ) ; "name", 1=norm;2=ortho, pich,yaw,roll, zoom, 1=locked;0=unlocked ; Defines a new camera, returns its ID Function VCam( name$, ortho%, pitch#, yaw#, roll#, zoom#=.5, locked%=0 ) c.VCam = New VCam c\cam = CreateCamera() TurnEntity c\cam, pitch#, yaw#, roll# : CameraZoom c\cam, zoom# MoveEntity c\cam,0,0,-5 ;push it back some CameraProjMode c\cam, ortho c\name$ = name$ c\ortho = ortho c2.VCam = Before c If c2 <> Null c\ID = c2\ID + 1 Else c\ID = 0 EndIf DebugLog c\ID Return c\ID End Function Const VWidth_d = 300, VHeight_d = 300 ; default viewport dimensions Const VCamera = 0, VWidth = 1, VHeight = 2 ; constants for viewport array ; Dim Port( numports ) ; value = 0 - The camera it is using Dim VPort( 3 ) ;create default cameras (should be put into a config file later) and puts them into a port VPort( 0 ) = VCam( "Left - Ortho", 2, 0, -90, 0, .5, 1 ) VPort( 1 ) = VCam( "Front - Ortho", 2, 0, 0, 0, .5, 1 ) VPort( 2 ) = VCam( "Top - Ortho", 2, 90, 0, 0, .5, 1 ) VPort( 3 ) = VCam( "Perspective", 1, 45, 45, 0 ) ; Function displayVPort( port_number, x_loc, y_loc, width, height ) ; Displays a viewport at a specified location of a specified ; width and height, so that you can change the number of viewports ; and how they are arranged later on Function displayVPort( port, x, y, w, h ) For c.VCam = Each VCam : If c\ID = VPort( port ) Rect x,y,w,h CameraViewport c\cam, x+1, y+1, w-1, h-1 CameraProjMode c\cam, c\ortho name$ = c\name$ Else CameraProjMode c\cam,0 EndIf : Next RenderWorld Text x+2,y+2,name$ End Function Const bwidth=32,bheight=32 Global TBar = CreateImage(200,600) Function buttons() SetBuffer ImageBuffer( TBar ) Color 128,128,128 For loopx=0 To 4*(bwidth+4) Step (bwidth+4) Rect loopx+4,300+4,bwidth,bheight,True Next SetBuffer BackBuffer() DrawBlock TBar,600,0 End Function While Not KeyHit(1) displayVPort( 0,0,0,300,300 ) displayVPort( 1,300,0,300,300 ) displayVPort( 2,0,300,300,300 ) displayVPort( 3,300,300,300,300 ) buttons() DrawImage cursor,MouseX(),MouseY() Flip Wend End |
| ||
I think what this project needs is some sort of central location where anyone can go to find the latest of all code. Maybe even something like a wiki, but that's not necessary. Also, I think there should be a consistant coding style decided on, so things won't get messy. |
| ||
I think what this project needs is some sort of central location where anyone can go to find the latest of all code. Maybe even something like a wiki, but that's not necessary. Also, I think there should be a consistant coding style decided on, so things won't get messy I did get a domain name. Now I will get it hosted, and build a basic site for this very point you're making. So, yes, there will be a central point, www.sirgak.com. I just need to get it up and running, HTML-wise. |
| ||
I'm here to help as much as my fellow programmers seem to mock my comments on blender! drugs, pssh. HTML help I can offer. Just give the word and I can... do my best. |
| ||
instead of drawing the wires around the cone, why not just display the actual wireframe? |
| ||
Update: Just posted the hosting info to the new web domain, www.sirgak.com. They tell me it can take up to 48 hours. Then, I'll be looking to set up the website, so any HTML help with be appreciated, for doing the following (per Happy Sammy): Hi Sir Gak, How about host a web site for this open project special to Blitz3D? (free hosting is ok) 1. name of the project 2. wish list 3. progress This is done so that we know which part we could participate. Sammy :) FYI: The name I propose is BlitzModeler Initial wish-list is simple (and I promise it will grow MUCH larger): How do we cause a grid to appear, obviously centered on 0,0,0, like the way the other modeler progs out there do it? Do we use CreatePlane(), with alpha so that it's semi-transparent, or what? Here's hoping the project moves along, for everyone's benefit. |
| ||
Hi Sir Gak, Hope this helps: http://www.codersworkshop.com/viewpost.php?id=20941#20941 Sammy :) |
| ||
Well, what I have in mind, are lines that lay along the plane (as in the plane created by the CreatePlane command), centered on 0,0,0. Moreover, I want the lines to lay on even intervals on the coordinates they are drawing, no fractional appearances of lines between whole-number coordinates. Hence, when the user sees the empty grid, it is representing the coordinate system that will be used to represent 3D model meshes. Is this making sense? |
| ||
what you say makes sence Sir Gak. It would be ideal to put the entity order so that the plane is drawn first so that you can never have it visibly intersecting the model. |
| ||
"It would be ideal to put the entity order so that the plane is drawn first so that you can never have it visibly intersecting the model." That wouldn't be a good idea in the perspective viewport... Maybe reset the entity order when rendering perspective eh :) |
| ||
why not just look for fragmotion. it does all you want for b3d. http://www.fragmosoft.com/ |
| ||
Well! It certainly does seem to do what we want for b3d. Maybe we can put BlitzModeler on hold? |
| ||
yea.. but FragMotion costs money... |
| ||
Hi Sir Gak, As BlitzModeller is designed as open-source modeller, would you mind if others put the last modified source code on some web sites and continue developing the modeller? (Open source: one man stop, others could continue) Sammy :) |
| ||
By all means, it should continue. Hey, isn't that the whole point of open-source? I haven't abandoned BlitzModeller, BTW. :) Just got busy this past week. So, let's do it! I have a URL for this project, www.sirgak.com. Can anybody help me with some HTML code for a simple website so that this project can rock on? |
| ||
Can anybody help me with some HTML code for a simple website so that this project can rock on? Consider using sourceforge.net. You get a CVS repository too if memory serves correctly! |
| ||
I have more experience with html and javascript than blitz so feel free to e-mail me. I am really interested in the outcome of this project. my email is [removed to prevent spam] . Theres also a lot of neat stuff on www.dynamicdrive.com |
| ||
sourceforge is vary picky! Rejected all my projects like 10 times for not being "specific" If you have the hosting I can do a quick HTML/CSS page to hold it if you want. Oh yeah, jackrackam@... about 4 years of HTML/JAVA/CSS |
| ||
sounds like PCD GUY has a little more experiance then me. I would need a refresher on CSS anyway. I can't wait to see how this turns out. I would still check out www.dynamicdrive.com it has some really great stuff... |
| ||
I will help with this project if u want.. If you see "Cyberscape 3D" in the galery. I want to make it open source (its script based), and then call it BlitzModeler if i may. And all of you may help me with new plugins and scripts if u want? Its using BlitzBVM. |
| ||
Hi all, What is the current version of BlitzModeller? Where could I download the source to see the progress? I only got the last version from "Tainted Instinct" (1 week ago). (let's start!) Thanks Sammy :) |
| ||
PCD GUY: Yes, I have the hosting. Let's do. Thanks. I am at sirgak@... (and I suppose I should setup an email at www.sirgak.com, where the hosting is now in place). Let me know what I need to do. BlitzModeler is for everyone! |
| ||
https://sourceforge.net/projects/blitzmodeller I got us a sourceforge if you guys want to use it |
| ||
Tainted: OK, that would be great. How do I upload the current source? May I assume that, since you got the sourceforge site, that you want (at least for now) to moderate the project on sourceforge?? |
| ||
I'll give you mod privledges, but I'll need to know your account name. If you don't have one they are free. To upload you have to use the ftp system they have in place. |
| ||
Did this die or something? |
| ||
think so |
| ||
Please dont say its dead, I really like the idea. |
| ||
Yeah so did I, I offered to even do the web page. But no replies. |
| ||
well, it looks like nothing has changed on thier source forge page, maybe Sir Gak is doing some really serious hacking on this project and has not had time to post? Lets all hope |
| ||
It's dead already... ![]() |
| ||
Does anyone have the latest version that was worked on? I think we should carry on with it. 'Cause it was a great idea. I'm going to take the last one posted above (the one talking about the different viewports, etc;), and I'm going to mess with it and start adding a few things. If anyone wants to help then cool. If not thats fine also. I just hate to see a good idea die like this. |
| ||
i dont know if there ever was a version that was being worked on. Youd have to ask Sir Gak. he was in charge and had something started i think, not sure. I would be willing to help as much as i can. I am just starting to understand the 3d stuff of programming |
| ||
The latest version is what I posted (to my knowlege). If anyone has a source forge account I'd be glad to give them admin privledges so that we can get some more momentum going, you need to have certain permissions to upload something to the site so I would need your account names. |
| ||
I just got a SourceForge account. My account name is: riddlemaster. I'm going to take the source that you have above, and I'm going to make a simple gui for it with BCF 2.0 (freeware). I'll also work on putting in some code to make some primatives (i.e: cubes, spheres, etc;). I'll put in some buttons for the primatives too. Let me know when you get me added to the sorceforge page and when I get some stuff going I'll upload it. *EDIT* I'll start working on it in the morning. |
| ||
alright, your in. |
| ||
I'm going to make two versions. One using BCF 2.0 as the gui lib and another using a different one. It might be either AlphaGUI or NGUI. I'm also going to clean up the code a little. I'm going to take all the functions and globals and put them into different .bb files. This way the main file, Editor.bb - for now, will only have some includes and the main loop. Also I'm new at using sorceforge and I'm still trying to figure out how to upload files. So any help with how to upload files to sorceforge would be nice. *Edit* Check out the following two screenshots: NGUI Version ------------ ![]() BCF 2.0 Version --------------- ![]() ------------------------------------------------- Tell me which one you like so far. I like the NGui one more. |
| ||
Hello, I'm back. Sorry about the delay. A lot of obligations hit me, then I took rather ill with the flu. Reading the comments to catch up, I'm glad people like the idea of OUR OWN 3D Modeling app. Due to a complexity of tasks I am juggling right now, I would like it if someone else took over guiding the project, as I just don't have the time at the present. Certainly, I'll look in on it from time to time and contribute when I can. Those of you out there who personally use3D programs like 3D Studio Max, can give perhaps a lot of input on user features you'd like to see in this, our own baby. |
| ||
I have no problem guiding the project. Unless someone else wants to. |
| ||
I am all for Riddle as long as we can get this thing off the ground. not sure if anyone posted this yet or if it is needed but the specs for .b3d format are here http://www.blitzbasic.com/sdkspecs/sdkspecs/b3dfile_specs.txt |
| ||
I like the NGUI version, it has a much cleaner look to it. Riddle: To upload stuff to SourceForge, you will need an FTP client. I just uploaded a file, but before i could put it in a release package the server went down for maitnence... Also, I just gave you full SF admin rights so that you can keep it moving. [edit] Server just came back up, the source file (the one that was last posted) is available for download now. [/edit] http://sourceforge.net/projects/blitzmodeller |
| ||
I'll upload the current version of the ngui one, with all the needed files, later tonight. I'm in the process of adding a few buttons (cube, sphere) and a tab for the buttons to be on. |
| ||
Yup NGUI And am I still needed for HTML/CSS/JAVA help? BTW: Riddle, make a new thread and have it sticky for us to work on, this ones crowded with "is it dead" questions |
| ||
I was thinking about that earlier. The new thread will be BlitzModeller. |