MiniB3D Thread 4
BlitzMax Forums/MiniB3D Module/MiniB3D Thread 4
| ||
Thread 3 Latest Version: 0.30 - download from here. 0.30 adds a few new things, including picking, the tform commands and cube mapping. |
| ||
Awesome! downloading now will this be your last update? I know you said you would stop developing it feature wise just was wondering if this is it? |
| ||
Yay, Picking! I need this for two projects of mine, both of which will be using MiniB3d. (One for prototyping and eventually a selectable renderer, and the other full time). Thanks, Simon. You're doing us all a great favour. |
| ||
Great timing! I have started to think of a new projekt to work on and picking is going to be important if I want to get anywhere with that one. :) Thanks! |
| ||
Looks really good :-) The newly added functionality actually let me finish nearly all of the Particle Candy conversion to test it (only aligntovector is missing and when I find out what it actually does, I'll add it :) ) and the results aren't even that bad. It runs at about 3/4 speed of what is has in B3D and that although I haven't optimized its structure to BM behavior (only optimation that is already added is pooling for the particles) So MiniB3D is definitely not much "worse" than Blitz3D and the new "MiniB3D only" commands are definitely a win :-) |
| ||
great work! TForm let me finish porting over more of the Irrlicht particle system as well. |
| ||
including picking, the tform commands and cube mapping. Neat work :)thats going to bring a few more projects to max for sure!!! :) Jesus, it's almost possible to port the racer over! 8drool* |
| ||
Fantastic, works well Thank you again! Do you have any thoughts/comments on native MiniB3D MaxGui canvas support? |
| ||
will this be your last update? I know you said you would stop developing it feature wise just was wondering if this is it? No, there will be more updates. There's not many more features I want to add, but I'll be working on general speed + stability a lot more yet. Do you have any thoughts/comments on native MiniB3D MaxGui canvas support? Not sure what you mean by this. There is a gui.bmx example with MiniB3D that runs MiniB3D in a window - do you want something more than that? |
| ||
many thanks & great job! |
| ||
One thing I thought haven't seen in the update notes when I'm not fully wrong: didn't you (or was that some one else) mention that it would have better Max2D compatibility? I actually haven't tested that yet ... |
| ||
I took it out as random issues kept appearing. I think if you want to use 2D with MiniB3D it's best just to use sprites. |
| ||
ok :-) |
| ||
simonh, do you plan on compiling this as a module or just leaving it as an import file? |
| ||
"Safari can’t open the page “http://www.si-design.co.uk/” because it can’t find the server “www.si-design.co.uk”." Trouble with your download link |
| ||
No problem here; try again. |
| ||
Addapt and Take this code to create a vectorpitch and vectoryaw function in your minib3dTYPE field x:double field y:double field z:double Method Pitch() Return ATan2( Sqr( Self.x * Self.x + Self.z * Self.z), Self.y ) - 90.0 EndMethod Method Yaw() Return ATan2( - Self.x, Self.z ) EndMethod end type |
| ||
I have started to code a replacement for Max2D for MiniB3D. Need a lot of 2D interface graphics and high quality text for my CRPG. I might have found a bug in TTexture! When tex already exists in LoadTexture() it doesn't set width and height on the new texture! The new texture's TextureWidth() and TextureHeight() returns zero. I changed to this:' check if tex already exists Local tex_exists=False For Local tex2:TTexture=EachIn tex_list If tex.file$=tex2.file$ And tex.flags=tex2.flags tex_exists=True tex.pixmap=tex2.pixmap tex.gltex=tex2.gltex tex.width=tex2.width tex.height=tex2.height EndIf Next |
| ||
Odd... I can't run the examples that are using minib3d. Here's my output:Building fog Compiling:MiniB3D.bmx flat assembler version 1.66 4 passes, 0.2 seconds, 167424 bytes. Compiling:fog.bmx flat assembler version 1.66 3 passes, 3248 bytes. Linking:fog.exe Executing:fog.exe Unable to calculate tex size Process complete |
| ||
Try adding this code at the end of minib3d:Function GLAdjustTexSize(Width:Int Var, Height:Int Var) Function Pow2Size:Int(N:Int) Local Size:Int Size = 1 While Size < N Size = Size Shl 1 Wend Return Size End Function Width = Pow2Size(Width) Height = Pow2Size(Height) End Function That should fix it. |
| ||
There is also a crash bug with the current version that affects certain computers. The bug happens when mixing texured and non-textured objects, like in fog.bmx To fix it, add this line to line 3935 glDisableClientState(GL_TEXTURE_COORD_ARRAY) The next version of MiniB3D will include a collision system the same as B3Ds. It is working already, now I'm working on speeding it up. |
| ||
Thank you! It worked!!!! |
| ||
The next version of MiniB3D will include a collision system the same as B3Ds. It is working already, now I'm working on speeding it up. thank you for the news simon. cant wait to check it out! if there is a way to buy you a beer (or your drink of choice) please let me know :) |
| ||
Great work! :D |
| ||
Anyone done a AllignToVector equilivent? |
| ||
Looking forward to seeing the next release of this, very much! |
| ||
The next version of MiniB3D will include a collision system the same as B3Ds. It is working already, now I'm working on speeding it up. Awesome! By the way, the link in your sig to your worklog is not working: "Internal Error". Via your user-profile I found it at http://www.blitzbasic.com/logs/userlog.php?user=6&log=1369 This tread is more up to date, though :) |
| ||
Saw this earlier today, nice work simon :) I noticed a bug/typo when playing around with picking. On line 5368 i changed For Local tri=1 To surf.CountTriangles() to For Local tri=0 To surf.CountTriangles() |
| ||
Yeah, bug confirmed. You need to change 'To' to 'Until' as well. |
| ||
Funky line of code here:If Right$(file$,4)=".3ds" Then Return CreateCube:TMesh() Looks like MiniB3D doesn't load 3ds files yet, but it will draw a cube shaped stand-in for no particular reason? :b |
| ||
Does EntityInView work?! Is it a mistake of mine or a bug?Import pub.minib3d Strict Local width=640,height=480,depth=16,mode=0 Graphics3D width,height,depth,mode Global cam:TCamera=CreateCamera() PositionEntity cam,150,20,150 Global mesh:TMesh = createsphere() 'loadmesh("media/teapot.b3d") PositionEntity mesh, 150,10,200 ScaleEntity mesh, 20,20,20 ' used by camera code Local mxs#=0 Local mys#=0 Local move#=0.8 While not KeyDown(KEY_ESCAPE) mxs#=mxs#+(MouseXSpeed()/5.0) mys#=mys#+(MouseYSpeed()/5.0) RotateEntity cam,mys#,-mxs#,0 MoveMouse width/2,height/2 MouseXSpeed() MouseYSpeed() RenderWorld If EntityInView(mesh, cam)=False Then DebugText 10,10,"Is not in view!" Else DebugText 10,10,"Is in view!" End if Flip Wend End |
| ||
You have to use the minib3d own CullRadius Function to enable Inview function to your entity:Import pub.minib3d Strict Local width=640,height=480,depth=16,mode=0 Graphics3D width,height,depth,mode Global cam:TCamera=CreateCamera() PositionEntity cam,150,20,150 Global mesh:TMesh = createsphere() MeshCullRadius(mesh,1) ' Setting the Culling Radius to 1 (and activates EntityInView) 'loadmesh("media/teapot.b3d") PositionEntity mesh, 150,10,200 ScaleEntity mesh, 20,20,20 ' used by camera code Local mxs#=0 Local mys#=0 Local move#=0.8 While not KeyDown(KEY_ESCAPE) mxs#=mxs#+(MouseXSpeed()/5.0) mys#=mys#+(MouseYSpeed()/5.0) RotateEntity cam,mys#,-mxs#,0 MoveMouse width/2,height/2 MouseXSpeed() MouseYSpeed() RenderWorld If EntityInView(mesh, cam)=False Then DebugText 10,10,"Is not in view!" Else DebugText 10,10,"Is in view!" End if Flip Wend End |
| ||
This is a great 3D engine! Although, is there any possibly way you could integrate these commands: Global ------ ClearCollisions Collisions Plane ----- CreatePlane Mirror ------ CreateMirror Terrain ------- CreateTerrain LoadTerrain TerrainSize TerrainDetail TerrainShading TerrainHeight ModifyTerrain TerrainX TerrainY TerrainZ EntityCollision --------------- ResetEntity EntityCollided CountCollisions CollisionX CollisionY CollisionZ CollisionTime CollisionEntity I really would love them in BlitzMAX! Also, are we allowed to use this module in a commercial product? Great module, anyway! |
| ||
Currently SimonH is adding Collisions to this Engine, currently speedfixing etc. . And maybe you should look here: http://code.google.com/p/minib3d-unstable/ this Version has some additional functions like md2 loading and animation, VBO support and super easy GLSL Integration. Also I'm currwently adding a terrainsystem to this engine (not like the one from B3D (the technique is normally outdated with current hardware) but I try to make it as easy as the original one. But this will take a while. |
| ||
This engine is getting to be really great! Are there any plans to add the Quake 3 BSP support anytime soon? |
| ||
Time will tell ;) To be serious: I think not. But we (me and Mr. Picklesworth) are currently working on a uncomplicated plugin system to let users add features they want as easy as possible. So it may be that some one will include BSP to it. But currently the only thing i could offer is to use a quadtree which will be available with the terrain I'm currently writing. |
| ||
* Bone scaling not yet supported (does anybody use bone scaling?) Yes, I have had some problems with animated X models that use bone scaling (it turns out). I converted them to B3D using Unwrap, but the model breaks up when I load and animate it in MiniB3D. Any plans to add bone scaling? It would really make my day! |
| ||
@Klepto2: The EntityInView code you posted doesn't work for me. It always says "Is not in view". |
| ||
your right, the EntityinView Function seems to be broken. I will fix it today and post the solution later. |
| ||
Method EntityInView#(ent:TEntity) If ent.cull_radius<>0.0 ' was previous ent.radius Return SphereInFrustum(ent.EntityX(True),ent.EntityY(True),-ent.EntityZ(True),ent.cull_radius) EndIf End Method change the EntityInView Method in TCamera to the above code and it will work.SimonH has simply forgotten to change ent.radius to ent.cull_radius. |
| ||
Hi simon :) Have alway problem with B3D files example : Blitz3D version : Mini B3D version : On the image you can see that some pieces of the ship are moved out for a strange reason ? any ideas ? so keep up good job :) ! |
| ||
"Filax" - I can fix it, I can fix it. Email me the full source and media and I'll take a look. |
| ||
There is no sources, just a loadmesh :) |
| ||
He'd only try to put it on his chips anyway. |
| ||
Can you send me the model Filax? I'll take a look. |
| ||
Also, JonasL, can you send me one your models that uses bone scaling? It should be easy to add. |
| ||
Email sent simon :) |
| ||
I can't compile the source file; it says: "Identifier 'GLMax2DDriver' not found" on line 33. If I change line 11 from Import brl.GLGraphicsto Import brl.GLMax2Dit works fine |
| ||
I fixed your bug Filax. Scale wasn't being taken into account when loading models - to fix you need to add:piv.mat.Scale(n_sx#,n_sy#,n_sz#)To line 6831. mesh.mat.Scale(n_sx#,n_sy#,n_sz#)And this to line 6878. Those line numbers are for V0.3. |
| ||
Also, JonasL, can you send me one your models that uses bone scaling? It should be easy to add. I'll send you the model, but there is one potential problem. It is an X model that has been converted to B3D using Unwrap. The best would probably be to send you the original X model. I have been experimenting some more and it seems like there is some problem with the conversion. If I convert the model from X to say Milkshape the bones are way out of scale compared to the object vertices when I load the Milkshape model back into Unwrap, Irrlicht or whatever. Bones are huge and the model is very small. I guess the bones are not converted correctly. This is what gives the strange effect of the model breaking up, limbs breaking off during animation. If I manually scale the vertices so they fit the bones the animation works just fine. I can't tell if the B3D model was correctly converted. I'm a newbie at this so perhaps this is just in order! |
| ||
Yeahhhh ! Very good news simonh :) |
| ||
Try this example; it can't compile since the minb3d file doesn't import brl.glmax2d:Strict Framework brl.blitz Import "MiniB3D.bmx"if you try to compile it, the compiler notifies "Identifier GLMax2DDriver not found" - it could be fixed by changing the brl.glgraphics import statement to import brl.glmax2d instead. |
| ||
eh guys, its my ship. :) from project Tachyon Storm build by Filax Great work, I like to see my ship with Bmax and MiniB3D. Good work, continue to increase MiniB3D. Super Filax, çà fait plaisir de voir mon beau vaisseau bien texturé :) |
| ||
Hi, first of all: Thats the greatest project on the world!! I love ya for this :D But i've got a question: Is there somewhere a documentation for MiniB3D (for things like shader, i've seen some stuff from klepto2) and so on..would be very cool wild-storm |
| ||
http://groups-beta.google.com/group/minib3d-discussion/web/shaders-glsl (thx ² Klepto2) |
| ||
Wow, I never thought that would be found! Hope it's helpful. I never really went to explaining how to get them going in MiniB3D, but some day, when all the nails are in, it shall have that :) Klepto2's implementation of hardware shaders is really clean and easy to sort out, though. If you play with his example for a while, it starts to make sense. There aren't an awful lot of functions involved; it's more a matter of seeing how people do it, of which there are many examples / tutorials. One important thing to be aware of is that it's all about sending values from your program to the shader program. That's where a really awesome engine makes it all easier via helper functions and the capacity to do that sort of stuff automatically. Anyhow, GLSL Shaders are in Klepto2's version and the SVN version (Which is currently nearly precisely the same as Klepto2's version because I discovered block comments and ended up writing a book instead of code... so it's taking me a while to do my changes :/). Simon wants to keep MiniB3D as a simple, stable and clean B3Dish engine for BlitzMax, so he probably won't be adding much that wasn't there in the first place aside from what just comes along magically like cross-platform :) (Therefore, there really should be a different name for the SVN one...) |
| ||
Hi! I made simple tests with my b3d files in Minib3d (v.0.30). All models, levels etc. loading without problems and looking like in Blitz3D. I'm very impressed with the results but one thing is a real pain - rendering speed. With big levels old Blitz3D is 4x (sometimes 100x) faster than Bmax. I use modified code from light.bmx (and light.bb) demos. My file Arena.b3d (7 meshes in hierarchy) have 91000 triangles and 7 lightmaps (one lightmap per child) + 1 generic texture on all meshes. MiniB3D (0.30 by Simon)- 22-24 fps Blitz3d - 88-100 fps (Tested in 640x480x32 P4/2.4GHz 1GB GForce 6600/256MB) But one thing... Framerate in Bmax is always the same - with Flip 1 and Flip 0, in window and fullscreen and when i'm looking outside the level. Strange. Some screenies: http://strony.aster.pl/mikele/blitz/minib3dtest_1.jpg http://strony.aster.pl/mikele/blitz/minib3dtest_2.jpg http://strony.aster.pl/mikele/blitz/minib3dtest_3.jpg With another scene (21500 tris, about 50 meshes/50 textures + 1 lightmap) i have 4fps in Bmax and 400fps in B3D :\ BTW. I tried MiniB3D (Klepto version) but i had Unhandled Memory Exception Error with Arena.b3d file and 4fps with second scene. I hope i'm doing something wrong. |
| ||
have you tried the module version? Or maybe you coud send me your app, so I could test and bugfix it? |
| ||
In the module version i have the same error with arena.b3d (Unhandled Memory Exception Error). With another file i have much better performance but it looks rather strange (z-buffer only?) I can send this files to you but zipped arena.b3d with resized textures (crap but works :) is large (5.2 MB). Smaller level is 3.2 MB. Is it ok for your mailbox? |
| ||
Mikele, totally offtopic, but wow man, I love your screenshots. What's that going to be? It looks awesome :) |
| ||
Mikele, yes my mailbox can handle this. Feel free to send. |
| ||
Can you send me the .b3d files too Mikele? I'll take a look. |
| ||
>klepto2 & simonh I sent a files a few minutes ago. >punksmurf Thanks. It's a one of concepts of battle arena (hell or wherever) for commercial project. I use it only for test with blitz. [EDIT] I have installed latest drivers for nvidia (93.71) and...hmm Minib3d: 20-21 fps Blitz3D: 25-37 fps (?!!) Argh... I hate windoze (XP here). |
| ||
Ah, that sounds more reasonable. I'd still like to take a look at the files though, but they haven't turned up yet - could you try sending them to si@...? |
| ||
> that sounds more reasonable Yes, but i like faster Blitz3D (dx7) with old driver :) Check your mailbox. |
| ||
I think the lag of performance comes from the fact that simon doesn't have worked on the performance side. If you have a ATI 9600 and up are similar nvidia type you should notice a big performance hit in comparison to B3D by using my version(that's only because VBOs). PS: Email isn't arrived here also. |
| ||
I tested arena.b3d on my laptop Turion64/512MB + ATI X700/128MB: Same code. MiniB3D: 12-14 fps Blitz3D: 170-220 fps >klepto Hmm. :\ I will try to divide attached files in a few smallest emails. |
| ||
Has arrived now :) |
| ||
> Has arrived now :) "b3d test files" or "part1..."? |
| ||
the complete package and part 1 ;) |
| ||
Yes, there's definitely something not quite right somewhere. I have a feeling it has something to do with the texture management. Thanks for sending these over Mikele, they're going to be very useful! |
| ||
don't know if its help, but the textures are stored with a fixed path. |
| ||
No, doesn't matter - textures are searched for in the same directory as the model. |
| ||
Mikele: OK, I found out what the slowdown problem with the aztec model was - the lightmap.png (3MB) texture was being loaded every time it was referenced in the b3d file - about 80 times! To fix it comment out line 6701 in V0.30. The slowness with the arena model is mainly caused by it's huge size - 250,000 vertices in total. Using VBOs will help here, but I am yet to add these to MiniB3D. Not sure why klepto's version doesn't work. Also, no automatic culling is applied to the child meshes like in B3D, which is why you get the constant frame rate. You will have to use MeshCullRadius on the child objects to fix that. Auto-culling will be in the next release. Awesome models, by the way! |
| ||
Any guesstimation on a releasedate for the next release, SimonH? |
| ||
Good news Simon! Btw. Aztec level was exported from 3dmax (Pudding plugin) and arena was exported from maya (b3d contain some ugly nodes: cameras, manipulators, transforms etc.) and it may be a problem with klepto version. |
| ||
also good new sfrom my side. I have got it working with my VBO/Shader version: Standard miniB3D --> 13 FPS VBO miniB3D --> 150 FPS Short summary about my faults in miniB3D: -screwed up some code of the LoadanimB3D (some not needed updatebuffer code was called on every vertex and triangle change - not changed texture loading (brush textures) I will send you a test app to check if it runs now with my version. |
| ||
. |
| ||
Any guesstimation on a releasedate for the next release, SimonH? Probably not until the new year now. Is there any chance that MiniB3D will be able to load Wavefront .OBJs in the future? Um, highly unlikely - unless someone else writes a loader! |
| ||
Yeah! I have 83-85 fps with arena now :) (ATI X700) Good work klepto2! >Simon I don't see difference with your fix :( (aztec level) |
| ||
I found this bug Simon :) Add this at line 6722: Repeat te_file$=Right$(te_file$,(Len(te_file$)-Instr(te_file$,"\",1))) Until Instr(te_file$,"\",1)=0 Repeat te_file$=Right$(te_file$,(Len(te_file$)-Instr(te_file$,"/",1))) Until Instr(te_file$,"/",1)=0 and now texture filename is correct. I have 125 fps now (aztec level) :) |
| ||
Yeah, that's another solution (easier to comment out line 6701 though). |
| ||
Some news: Updated my minib3d module: -->fixed b3d loading bug -->sprites are working now -->added a new special function called UpdateVBOBuffer(mesh:Tmesh) important if you want to create your own meshes --> some minor brush and texture fixes Download: http://klepto2.kl.funpic.de/DL/klepto.mod.zip enjoy |
| ||
Haha... my mistake. Line 6701 in my MiniB3D.bmx : te_file$=b3dReadString$(file) :) I have proper version now and your fix is better :). Thanks! |
| ||
Hi! Great work! But... some meshes in loaded scenes looks different. I think that you must add a scale fix mentioned by Simon a few posts above. piv.mat.Scale(n_sx#,n_sy#,n_sz#)To line 6831. mesh.mat.Scale(n_sx#,n_sy#,n_sz#)And this to line 6878. Those line numbers are for V0.3. |
| ||
yes, just have overseen that part ;) I will upload a new version tomorrow. |
| ||
Yes. With this fix everything is ok. I found another b3d file which generate error :) --------------------------- BlitzMax Application --------------------------- Unhandled Exception:Attempt to access field or method of Null object --------------------------- OK --------------------------- I can send it to you. |
| ||
Mikele, could you test this version? http://klepto2.kl.funpic.de/DL/klepto.mod.rar It is a version with the above mentioned bugfixes plus your textureload fix. Also yesterday I have stupidly forgotten to save the latest version before building the module so the new UpdateVBOBuffer(mesh:Tmesh) command and the Function overview for minib3d wasn't included. (Now the keywords are highlighted) |
| ||
Works nice and fast except for one file :) (Unhandled Exception:Attempt to access field or method of Null object). The same with mod and Simon's version (works fine in Blitz3D). |
| ||
Could you send me the file? Just for testing purposes? |
| ||
New file should be in your mailbox. I found another problem. When i finish FULLSCREEN app (minib3d.mod) then i have: --------------------------- testb3d.exe - Application Error --------------------------- The instruction at "0x69720734" referenced memory at "0x00004360". The memory could not be "read". Click on OK to terminate the program --------------------------- OK --------------------------- It not happen with Simon's version. Bmax 1.24 here. |
| ||
Can you send me the non working model file please? Does it contain animation? |
| ||
Sent. >Does it contain animation? Yes. Simple TRS type anim, no skinned. |
| ||
Yeah, that's where the problem is. At the moment non-skinned anims are not supported. |
| ||
When will we see version 0.40? Could we have a progress report on it? |
| ||
Progress report - nearly ready, still one or two things I want to do though. It will be released in a few days. |
| ||
Hullo, is Zsorting working properly? i am getting flickering and shine-through meshes when entity orders are equal. also interestingly drawing a sprite with alpha channel enables alpha on debugtext. no sprite with alpha channel and the debugtext has a black background. sorry if these are obvious issues - i've never worked with blitz and this is my first go at bmax with miniB3D as a gfx engine. it is fun to work with and my thanks to simon and all involved. |
| ||
Z-ordering should be working ok. Post a demo and I'll take a look. |
| ||
its a brilliant engine, I will use it for all me projects in Max (apart from me Elite Multiplayer server thingy as thats GUI ;) ). |
| ||
Hi Simon, i upped a file for you at : http://www.ninjinkai.de/bagofstuff/zordering.zip Space - Creates new Constellation (try to get a couple of planets to visualize the problem) Left Mouse - takes you near a star Try to move the camera so that a planet is behind the star - this shines through although both are entityorder(0). Likely an obvious mistake on my side - thanks for looking. ah and "P" lets you turn on and of the indicator sprite - try and see the alpha phenomenon with debugtext i mentioned. |