PDA

View Full Version : New version of Coalesce is complete


BobimusPrime
2003.07.06, 03:59 PM
I released a modeller recently that used a fullscreen OpenGL GUI. This is a Cocoaized version of that program. I did entirely rewrite it though (which is why it took so long) so you can save and have multiple documents open and use textures and stuff. Try it out and let me know what you think!

Download: Coalesce.sit (http://www.bobbosoft.com/Coalesce.sit) 184 kB

codemattic
2003.07.06, 10:41 PM
Hi BobimusPrime

I was one of those who annoyed you to switch from the full screen version to the cocoa-windowed. Personally, I already find this version much more user friendly. I hope everyone else (and you) do so also. How was the transition to Cocoa?

I sent you an email through iDevGames email system awhile back with some Cocoa examples - but didnt hear from you so I didnt know if you got it. Its possible it didnt go through - I should of followed up. Did you get it and did it help?

I think the new version looks really good.


Here are some notes in no particular order:

One of the problems with meshworks file format is that (depending on how you program it) you have to do two passes. One pass to count how many things there are - then you allocate memory for it - then a second pass to actually load it. (If you use STL vectors you could get around this - but still...) Anyway - what I would like is a 'count' in the .coal file format. Like:

VERTICES 6
2.145 34.54 13.6
1.34 17.2 34.2
2.145 34.54 13.6
1.34 17.2 34.2
2.145 34.54 13.6
1.34 17.2 34.2
TRIANGLES 2
4 1 3 0
0.55 0.22 0.55 0.22 0.55 0.22
2 5 1 0
0.32 0.17 0.32 0.17 0.32 0.17

that way as you are scanning the file you know how much memory to allocate on the first pass.

Also (and this is only my personal preference) - but I think its time to let go of the resource fork. Maybe .coal files could be bundles? Then in the bundle there is a .model file which is a text file with the verts and tris. And then also there is texture0.tga, texture1.tga, etc... Or maybe not. Just a suggestion.

Preferences dont seem to save.

If the background color and wireframe color can be different for each document - then maybe they belong in the visibility/design/render utility window - there's room! Its slightly confusing now b/c vertex size is for all open documents while background color and wireframe color are only for the current document.

Coalesce doesnt remember untility windows' positions when I restart.

Extrude doesnt get the 'winding' correct. Some triangles' outside are facing in.

I would like to be able to select a triangle - and tell it to invert its winding. So if I see a triangle facing the wrong way I can fix it.

I would like to be able to select a triangle - and tell it to make all touching triangles face the same way - so if I have a solid object with some triangles facing the right way and some facing the wrong way - I should be able to select one that is facing the right way, hit a command, and the whole model will be fixed.

I would like to be able to rotate and scale around an arbitrary point and not just the origin.

I have made textured triangles by clicking planar projection. But the vertices do not show up in the textured window. If I drag in the texture window I get a selection rectangle - but I dont see any vertices and cannot select any vertices. It could be that this hasnt been implemented yet - but I got the impression you could do this from the ReadMe file.

Id like to be able to resize the texture utility window. Maybe resizing could scale down the texture window. Or the texture utility window could have zoom-in/zoom-out buttons which resized/scaled the texture utility window.

Id like to be able to paint directly on the texture utility window, and on to triangles like you had in the old version.

In the texture utility window Id like to be able to choose a fillcolor (in case Im not using a texture for that material), and other material characteristics (ambient, diffuse, specular, shininess)

You are using your own undo/redo scheme instead of Cocoa's - which is fine. NSUndoManager isnt that hard to use tho. But anyway, if you dont want to use NSUndoManager - look at NSWindow's setDocumentEdited: and NSDocument's updateChangeCount: methods so that when I edit a file the windows 'dirty' indicator is set - and if I try to close without saving first I get prompted to save. If you use the NSUndoManager that (and a revert command) are handles automatically.

From the Read.Me.rtf
>>
Saving:
You can save into meshwork or coalesce format using save and saveas. The meshwork format wont contain any texture information because of limitations in the format's texture coordinate storage. The coalesce format should have all of the texture information.
<<
what is the meshwork format missing?

I know you previously said that you like to edit models in a single view. I think many of us need more than one - Id like a quad view that has Front/Side/Top/Free - Maybe Front/Side/Top would be better as ortho while the free is perspective.

If I click on a single point - Id like to be able to view/edit in one of the inspectors the x,y,z,u,v.

and of course animation.


ok - are those enough requests for one post?

Its about time someone kicked Meshworks ass. Coalesce looks like its going to be a great low-poly modeller - Id definitely register Coalesce.

good luck,
Codemattic

igame3d
2003.07.07, 02:42 AM
Originally posted by codemattic
I'd definitely register Coalesce.


Yeah me too.

Keep up the good work Bob.

KittyMac
2003.07.07, 09:57 AM
Greetings,

This looks like a good start! Since others are giving ideas, here are my two cents:

- Change the metal panels to regular panels. Also have the edges of the panels be "sticky", so that when I drag one panel next to another they automatically line up, like in Photoshop. I'd also like to be able to resize them.

- In your application icon, one end is transparent in the middle of the bulb, it might look better if it were opaque.

- Hot-keys (and mouse over pop-ups to show them) for selecting things like create/select vertex, etc... The less I have to drag my mouse around the screen, the better. Also, do you really need both a select and create vertex? Could we not condense to only two tools, one which allows you to create vertices when clicking, then hold shift key to click and define triangles. Also, explore the wonders of two-button mice, perhaps use the second button for something? Hook the scroll wheel to zoom (currently opt-drag)?

- Wavefront .obj exporting. Also, don't get caught up with only file formats which include everything in a single file (ie textures and model data), allow the user to export to a directory where the .obj is made, along with separate texture files created.

- Create a "scrap shelf"... a panel or something where I can drag and drop model files into and out of. Also have support for different sets, so you can ship Coalesce with a set of Primitives like cube, sphere, cone, etc...

Cheers,
Rocco

BobimusPrime
2003.07.07, 10:41 AM
First off, the input is greatly appreciated.

codemattic:
I did get that email from you and for some reason I didnít understand it at the time. The stuff in that file woulda been reaaally useful. Silly me for not remembering it.

I will for sure add in the number of vertices and triangles in the file after the words ěVERTICESî and ěTRIANGLESî. Thatís a really good idea.

> Also (and this is only my personal preference) - but I think its time to let go of the resource fork

Iíd be glad to let go of the resource fork idea. The only reason I use it is because I figure people know how to load it, seeing as thatís the way meshwork does it :). Do you have any more details on better ways of doing it? Is square .tgaís standard enough as a file format?

About the preferences and stuffÖ Would it be better if all of the tools were in the same window as the main workspace itself? I noticed in that demo you sent me (the one I was talking about above) that the OpenGL view is located inside of the document window. In my opinion that would be a fine way to do it. It would also take care of the extra rendering time when one of the ětoolî windows is casting a shadow on the main document window.

> Extrude doesnt get the 'winding' correct. Some triangles' outside are facing in.

Iím pretty sure that the extrude tool gets the winding correctly. Did you set the extrude depth to be negative?

> I would like to be able to select a triangle - and tell it to invert its winding.

The reverse winding tool will be one of the first things I add to the program.

> I would like to be able to select a triangle - and tell it to make all touching triangles face the same way

I hadnít really thought of having a tool that corrects ALL of the attached trianglesí windings. I think it shouldnít be to hard to keep the triangles facing the right way when building the model. I made sure itís obvious when the user has it backwards :) (the triangle is clear instead of opaque! )

> I would like to be able to rotate and scale around an arbitrary point and not just the origin.

I set the transforming to be around the origin rather than an arbitrary point because you should be able to move the origin into the location you want to transform around. Using command-drag.

> I have made textured triangles by clicking planar projectionÖ but I dont see any vertices and cannot select any vertices

I had a bug in the version I uploaded yesterday afternoon. I fixed it at night though. Were you using a 24 bit texture? Also, was it square?

> Id like to be able to paint directly on the texture utility window, and on to triangles like you had in the old version.

Iím not all that sure that painting on the texture is a good thing. If the user is working in a texture they loaded from photoshop for example they will end up scarring the texture permanently in a way that is inferior to photoshopís ability to paint.

> In the texture utility window Id like to be able to choose a fillcolorÖ

Yeah, Iíll need to add all of that stuff in.

> You are using your own undo/redo scheme instead of Cocoa's

I probably should do the undo manager like you were saying. It just seemed like a pretty hard thing to figure out when I was doing that part of the program.

> what is the meshwork format missing?

Well, *ahem*, the meshwork format wonít let you have more than one UV coordinate for a given vertex in a given material. If, for example, you wanted to have six sides of a box be textured from different parts of the same material you canít. This is because each corner of the box can only have 1 UV coordinate rather than 1 for each side of the box.

> I know you previously said that you like to edit models in a single view. I think many of us need more than one

Not sure what Iíll be doing about this yet. Just so you know I accidentally left the switching views part out of the readme. If you press the numbers 1 through 6 while in the main document view you will switch to the 6 different sides of the model. I realize this is kindof important but I totally forgot about it.

> If I click on a single point - Id like to be able to view/edit in one of the inspectors the x,y,z,u,v.

sounds good.

> ok - are those enough requests for one post?

Yeah, I think that was about the right number of requests for one post ;)

KittyMac:

> Change the metal panels to regular panels

Iím thinking of redoing the format for all of the panels. Weíll just have to see what happens.

> In your application icon, one end is transparent in the middle of the bulb, it might look better if it were opaque

The reason one side is transparent has to do with why I called the program coalesce. Itís a sort of ěit comes together before your very eyes!î Alright, hopefully that was cheesy enough.

The rest of your suggestions are pretty intense, things I hadnít really though of before. I REALLY like them though. For some reason I was avoiding the two-button mouse thing. I guess I just assume not everyone has one.

Anyway, sorry this is such a long post. Thanks for all of the input!

Robert

Feanor
2003.07.07, 11:05 AM
Camera controls
vertex colours
working grid
3d primitives (cone, box, wedge)
local object co-ordinates
translations!
outline view of all objects/triangles/vertices for numeric editing
vertex snap
don't close an unsaved document

The last one is easy: just call [self updateChangeCount:NSChangeDone] from the document as soon as the user makes a change after creating a new document or saving.

If you aren't using the Cocoa document architecture, I strongly advise it. It will do lots of work for you.

BobimusPrime
2003.07.07, 03:46 PM
In response to your requests:

>Camera controls

Iím sorry, I had no way of making this obvious without the readme. I should do like an intro in program help thing but whatev. Check out the readme. You can use command, option, and spacebar along with the mouse drag to adjust the camera position, angle, and zoom. Also, I didnít mention this part in the readme but you can use the number keys 1-6 to quickly switch to different camera angles.

>Grid

Iím pretty sure the grid works. Once you enable it whenever you drag vertices around they will lock into place when you release them. Did you mean I should have a grid that you can see?

>Translation

If you select a group of vertices you can drag them around using the mouse.

>Donít close unsaved document

Yeah, I need to work on that one. I am using the cocoa document architecture but Iíve kind of been avoiding the undo manager.

Iíll definitely look into your other requests. The vertex color will be a little bit weird because some of the colors (red and green) are already used when making triangles.

Thanks for your input!

Robert

igame3d
2003.07.07, 04:01 PM
I think he meant working grid like, having a sheet of graph paper to write on. It is kind of strange drawing in the deep black netherworld. But fun.

The "grid" sure does work, very neat when deforming a mesh plane into a cool terrain, the orderliness of the grid, almost feels like the app is designing with you as you drag mountains and hills around.

BobimusPrime
2003.07.09, 09:43 PM
Fixed some eeeevil bugs. Enjoy! Same link as above. v1.0.3b.

codemattic
2003.07.10, 02:38 AM
BP -

These comments are wrt v1.0.2b. Im downloading the new version now.

>>
I did get that email from you and for some reason I didnít understand it at the time. The stuff in that file woulda been reaaally useful. Silly me for not remembering it.
<<
nertz. Oh well - I should of followed up. You seem to have picked up Cocoa/Obj-C pretty quickly anyway.

>>
Iím pretty sure that the extrude tool gets the winding correctly. Did you set the extrude depth to be negative?
<<
I dont think it is. I create three points - make a triangle (untextured) - select the one triangle - extrude +50 - now if you rotate the object you should see that the original triangle is facing the wrong way (you can see into the object). If you extrude - 50, well then everything seems backwards. But why would you extrude negatively? To create a negative space object - like a room where the camera is inside the object?

>>
I set the transforming to be around the origin rather than an arbitrary point because you should be able to move the origin into the location you want to transform around. Using command-drag.
<<
hey thats right. cool. Much like the vertex - Id like to be able to see (and set) its x,y,z values.

>>
Well, *ahem*, the meshwork format wonít let you have more than one UV coordinate for a given vertex in a given material. If, for example, you wanted to have six sides of a box be textured from different parts of the same material you canít. This is because each corner of the box can only have 1 UV coordinate rather than 1 for each side of the box.
<<
hey thats right. I always wondered about that in MW - for some models you *had* to create multiple textures - even if you didnt really want to.

>>
Did you mean I should have a grid that you can see?
<<
well I guess you added that in the new version. Pretty clever how the grid switches between cardinal planes. But I dont think seeing the grid will be useful in perspective view. But I do hope you add a ortho view option - and there it would be!

>>
> I know you previously said that you like to edit models in a single view. I think many of us need more than one

Not sure what Iíll be doing about this yet.
<<
Are you using MVC? Or have you put all your model's data into your view object? Keep your model as a separate object. (Incidentally NSDocument is a controller object (I would of guessed it to be a model) - so dont make your NSDocument subclass the document model either). If you have a separate model object - then you can have multiple views (and multiple windows!) all updated from the same model. Each view holds its own camera object - so each view can take a different shot of your model. When the user edits something in the view - that tells its controller - which tells the model what changes to make. When the model makes a change - it broadcasts a notification which tells all the utility windows, views, and whomever is interested that the model has changed and they should update accordingly. Dont have the model tell the view (or anyone else) that it changed directly.

>>
Would it be better if all of the tools were in the same window as the main workspace itself? I noticed in that demo you sent me (the one I was talking about above) that the OpenGL view is located inside of the document window.
<<
actually - I think they work better they way you have them now!

and...

OK - this might have to wait for v2, plug-ins! That way we can add stuff on our own. Look here <http://www.macdevcenter.com/pub/a/mac/2002/10/15/cocoa.html> for a neat example on how to add a plug-ins in a Cocoa app.


more unreasonable demands will be forthcoming... cheers,

Codemattic

igame3d
2003.07.10, 03:15 AM
Plug ins are a great idea, very valuable.

Reading that article makes me think they are really trying to write a tutorial called :"Replace Adobe, the 12 step program"

Feanor
2003.07.10, 10:00 PM
Hey! Why didn't I read the readme, eh? Doh.

OK, so here's more you can do:

zoom out farther -- I can't build a city in this :)
groups of triangles (please, please, please)
outline view of all vertices, triangles, and groups
groups are good because you can select them and move them around
hard one: add some constructive solid geometry features
join my team for uDevGame -- I need an editor app!
rulers! (See my unfinished StormCloud in the Inkubator repository on SourceForge for that, at least, if nothing else)
buttons to do 90 degree rotations -- to keep the angles exact, which is annoying to have to do manually


You said you weren't using the undo manager, but undo works! :???: Doing it manually seems a bit mashochistic.

And cut/copy/paste work as well, that's nice.

Working with vertices only is weird, but I was able to make a cube by rotating a lot. Then I was able to copy the cube, but I kept pasting it half-way through the original cube. Anyway, I'm getting the hang of it.

BobimusPrime
2003.07.10, 10:59 PM
Hey everyone. I uploaded v1.0.4b tonight. I was trying Coalesce for modelling (because I hadn't even made a full model in my own app :) ) and I noticed that only 8 materials is kinda irritating. Anyway, there are 32 materials now. Fixed some bugs, also I included a copy of the model I've been working on. I know it's not all that good, but I figure I should have some sort of sample model in the download. The files make the download about 400 kB and the link is the same as above.

I might use the model I included in my entry for uDevGame 2003, DigiKid II. I know I probably am breaking some rule by giving out a model I plan to use :). By the way, if anyone is interested in using Coalesce for uDevGame 2003 feel free to do that. Is there some procedure I need to go through to get Coalesce cleared for use in the competition?

On to feedback.

codemattic:

>extrude +50... the original triangle is facing the wrong way

I set up the extrude tool to move the selected triangles the set distance and create triangles connecting the selected triangles (which were just moved) to the the triangles they were previously connected to. That means there is nothing where the original triangle was. I imagine extrude being used on an already closed model, like primitives such as boxes and spheres (which I still haven't put yet) rather than on a free triangle.

>why would you extrude negatively?

Well, if you were drawing a wall in a room and you wanted to stretch the room backwards or make an alcove you just select the triangles on the wall and extrude negatively. Once again it's probably most useful when you already have a closed model.

>But I dont think seeing the grid will be useful in perspective view

Actually I haven't put in a perspective view yet :). All I have so far is a freely rotating ortho view. I should probably add the perspective view at some point though.

The plugin thing is gonna have to wait a while. I don't even know how to write a plugin for an actual program. I have a feeling setting up Coalesce to accept plugins would be harder than that. Oh well, I'll work on it though.

Feanor:

The groups of triangles sounds like a good idea. I actually had that feature in my previous modellers but I never really used it and it was really complicated. I'll also add in the zoom out thing. And I'll be adding in primitives at some point.

Thanks for the input!

Robert

igame3d
2003.07.10, 11:50 PM
Hey Bob, only coding tools and actual game playable are an issue with the contest, so don't sweat it.

You can discuss ideas and throw around art work like mad, since graphics is not the point of the competition.
Just don't show a playable until the contest starts.


Primitives should not be hard to come by.
You can make them with Meshwork and simply load them in. For free. Unless you want a very complex sphere.

Read that article about plugin's Bob, having the knowledge will open your mind to possibilities. Plug-in development will allow you to become more feature rich without having to expose all your source to the world, as well as not having to code every user request yourself (especially here, where you can respond to user requests with "so program it yourself", as they like to do to game design newbies). If you can release the app as shareware with a host of plug-ins support its good for everyone all around.

Feanor
2003.07.10, 11:55 PM
I've been using it now for an hour or so. I'm getting the hang of it. Two things I'd be interested in having available to use: a 3D-ruler (totally different than a 2D editor-style, although both would be useful), and a 3D selection tool.

The 3D ruler would extend the little axis marker into a full-on set of marked lines which extend, so, 100 or 200 units or something. The latter would require holding down a key to add depth to the selection region -- maybe the option key, since it affects the depth in camera mode. Since you're already freely converting between relative depth axis to draw the grid dots (which are VERY useful to me, btw), you can use the same math to choose the relative axes for the selection volume. OK, I'm not sure where it would start, but if the user can define the volume and then drag it around, that might work.

So groups are hard? What about groups of vertices, not triangles? I was just thinking that you'd throw them into a sub-array of your master array (or other container class). Force all the vertices in the tree list to reside in leaves, perhaps. Of course, that is a poor man's scene graph, but it might do the trick. In a full-on scene graph, the vertices would be hard to get to, but if you just use basic nested container classes and add code to traverse them, I think you'd be alright.

Yet another idea: locking! Nothing more aggravating than accidentally selecting and dragging the wrong geometry.

Keep up the excellent work!

Oh, and as for tools for making uDevGame entries, there are no restrictions that I know about. There was some talk of requiring tools that were native to Mac, but that was silly I think. I dunno, check the uDevGame section -- lots of noise there.

Anyway, good chance I'll be using this for my entry, for tweaking randomized levels and creating levels manually, all of which will then be post-processed.

How big is the work region? How grainy is it? I have done no thinking or research on what units work out to be and how to make sure models from different tools are the right scale when you put them together in the game. Obviously it's going to matter a lot.

Feanor
2003.07.11, 12:04 AM
I re-downloaded and I got v1.01.3, I think. Anyway it's creation date is one day newer than v1.03, so I guess it's what you meant by 1.04?

igame3d
2003.07.11, 12:11 AM
Originally posted by Feanor
I have done no thinking or research on what units work out to be and how to make sure models from different tools are the right scale when you put them together in the game. Obviously it's going to matter a lot.

3D units are an odd lot, I bet Bob will say its a GL unit.

And that would be....?

You just work in the GL unit space. For instance in iGame3D 1 GL unit works out to roughly 1000 Meshwork Units. And Meshwork units are what? Who knows?

Different applications definately handle sizes differently. A model that fits perfectly in the window of one app, is a monster in a nother, export to 3DS, bring into Meshwork, and its this little itty bitty thing at the center of the screen and rotated!!!! ugh.

Since Coalesce's zoom doesn't go far enough out, I've used select all and scaled the model to fit.

I've had no trouble edting terrain in the application, you should be able to build cities without too much trouble.

igame3d
2003.07.11, 12:16 AM
Oh Feature request: Bevel.
Extrude with scale, without switching different tools and different windows.

Could be a check box on the extrude tool, with a number field for the percentage of inner scaling.

BobimusPrime
2003.07.11, 03:12 PM
The workspace in Coalesce spans from -200 to 200 vertically in the default zoom. A good way to check the size of your model is to turn on a grid of size 10 and look how squares your model spans. The work area should not be grainy. It is a floating point number so itís probably accurate to 7 significant figures. For example if your model spans -1000 to 1000 each vertex should be accurate to 3 decimal places. I realize -1000 to 1000 is unrealistic due to lack of zoomability in Coalesce but Iíll fix it within a couple of days. Iím going to Chicago for the weekend but Iíll be back on Sunday.

I donít know about not being able to download the new versionÖ I guess make sure the previous version (application and .sit) isnít on the desktop and if it doesnít work then try flushing the cache on your browser.

I definitely need to do the bevel thing. Thatís been bugging me. That would finally make extruding at a depth of 0 useful!

So anyway, feel free to keep posting comments. Iíll be back on Sunday to field the requests. Have a great weekend!

Robert

Feanor
2003.07.11, 03:56 PM
The number keys totally escaped me. I have to admit I did not read all of your response to codemattic. :blush: I got 1.0.4 to download fine today.

Currently I don't have anything new to request or mention that hasn't been said by others. I take it you are planning to sell Coalesce? Just don't go into beta limbo like the author of Sphaera did! I don't know what the heck is going on there. But you have a grid, which makes me like your app better. He's got a ray tracer, which is cool, but I don't need one.

Wait: what about adding static lights? If they had OpenGL specification, or something readily adaptable, that would be pretty useful.

Feanor
2003.07.13, 08:32 PM
I request a finer grid. In a work space that is 2000 units on an edge, you need 11 bits of precision in fixed point to provide a grid with a 1 unit grain. Since the single precision floating point commonly used for GLfloat offers 23 bits of fixed point precision, I would personally like access to a finer grid that gave me aligned vertices at a scale of around 20 bits of precision. Is that practical?

If my base unit corresponded to a metre, then I can give eight bits of precision to fractions (down to 1mm or so) and 12 bits for large things (up to four thousand metres or so), and if I want bigger things, in my game I would use relative measurement from widely space world grid lines.

I don't have much use for extra precision if I can't be sure that vertices are aligned or not.

In place of rulers draw around the edges of within the view, you could make the grid a bit more useful by using dotted lines for major markers (every X grid units) and dots every X/Y grid units, where a grid unit is the smallest unit of the grid, not the base units of the workspace, and Y is the radix of the preferred measure. So I also request that you allow the user to specify the radix of the grid. I prefer base 2 (or 4, 8 or 16 -- same thing), but others will prefer base 10.

Finally, it might be nice if we could also specify both a unit conversion and a scaling factor when exporting, so it wasn't necessary to physically re-scale the models if loading them into another program. I can always scale them during import. It might be useful if the file format specified a "real" units to document units conversion, since artists probably have something in mind, as I do, but might want to vary it depending on the things they are modelling. I don't know if this is used in other 3D apps or not.

BobimusPrime
2003.07.14, 11:08 AM
I'm working on getting another version ready for download. I put in farther zooming out and groups and bevel.

Feanor:
Were you wanting a grid that wasn't just aligned on integer distances (like intervals of 0.01)? Or were you wanting more precision. I am using single precision floating point and I could jump up to double. It'd probably slow things down a bit though. Also, I didn't quite understand the radix stuff :). I use radix sort for my blended triangle sorting, but I guess I'm not really sure what radix means.

By the way, my blended triangle sorting isn't so good. It's fast enough but there are situations where triangles that are close together are out of order. If anyone has a reference for sorting routines where little errors do not occur please let me know!

Feanor
2003.07.14, 02:46 PM
Re radix: radix is the base of a number system. Radix sort depends on the value of a digit for sorting -- that's why it's so damn efficient for pre-numbered objects. (Doesn't work for things that aren't sorted on integer values.) If you were to implement a fancier grid drawing approach, then it would implicitly be based on the radix of the number system: base 10 for decimal, base 2 for binary.

Right now, you just have a dot every N units where N is the grid size. But I would like grid lines/points based on both a radix choice and the zoom level. So, if the grid was powers of ten, then at normal zoom, you'd have dots every 1, light lines (dotted lines) every ten, and bright dotted lines every 100. If it was base 4, then still dots every 1, but light lines on 4, bright lines on 16. And as you zoomed out, the lines would scale out -- so at zoomed out by 10, 10s would give a dot, 100s a light line, 1000s a bright line. (Actually you might want a 5-2 alternating pattern, with different grid line styles for 5, 10, 50, 100 -- whatever would fit in the window.) Line numbers on the rotational axes would be good, too. This would provide a ruler functionality.

And, as you say, the grid would let you scale down as well as up, going (in base 4) to 1/4, 1/16, 1/64 etc. It's this latter I want access to, and to have them drawn so I can seem them! :)

There's no need to change the actual stored precision of the vertices. I'm talking more about accepting the given limitations of the OpenGL libraries, but taking full advantage of them. A single-precision value is fine, but your current user interface is fully graphical, so I cannot tell exactly where my vertices really are anyway, unless you either make the grid system more flexible or provide some other kind of feedback. I'm happy with a grid that is responsive to the detail level I am displaying the model at. The perfect system would also allow editing of the vertex coordinates directly, but I'd want to be able to use binary (or hex) as well as decimal. The problem with decimal is that it is a lie -- the computer can't use decimal.

So, yeah, I want a grid that shows me 0x0.01 (two "decimal" places in hex -- same as eight bits binary). I can't do that now without turning off the grid, but without the grid, I have no idea if my vertices are aligned with one another.

Feanor
2003.07.14, 03:04 PM
I recommend that you consider control-click for zooming. In many programs, option-drag is the gesture for copying whatever is selected -- I also recommend that you implement that very desirable drag-copy feature. It can speed up the work a lot. I've got regular copy-past working fine,though, and it's almost as good.

EDIT: As for my argument about needing an extra-fine grid -- you could probably make that moot by adding alignment utilities: select two (or more) vertices and automatically give them the same x-, y-, and/or z- values, using either the least, greatest, or an average value. If you make it view relative, it would work like alignment features in Illustrator or Interface Builder.

BobimusPrime
2003.07.15, 09:18 AM
v1.0.5b is up now. I put in the stuff I described above and also redid the grid tool. Let me know what you think! Same link as before.

Feanor
2003.07.15, 06:27 PM
Those are good improvements, and show that your data model is still working. My feeling is that they could be tweaked some more.

First, instead of making the user select the log value, make that automatic based on the window dimensions and zoom level. Usually there is a best choice for any combination of the window size and the current zoom, so it seems sensible for the application to just make the choice automatically. Otherwise, the grid disappears whenever you zoom in and out. I like the tick marks very much!

Groups are handy, but there are some user-interface problems: one, the user won't remember which group is which based on a number; two, clicking on a vertex that is in a group still selects only that vertex -- I think the usual behaviour is to select the entire group, which would solve both problems at once. I think that we have different ideas of what a group is and how it behaves. I think that the "get" button is an unnecessary step. If the user clicks a group button (or name, in a future version :) ), then make it just get automatically.

I wish some other people would weigh in here and contribute! I only speak for myself, after all. And most of my preferences are a direct result of using and loving Quiver, which I've mentioned countless times in other threads through the last couple of years. So, I should admit that I'm hoping to find an app that duplicates the look and feel of Quiver -- but with independent vertex-selection, like you have right out of the box, which Quiver lacked. Quiver, being for Quake, was primitive-centric (they called it a "brush"), not triangle-centric, due to the way the original Quake level editor worked. It was a flawed approach (necessitated by the issue of level "sealing", I believe), but I think but Quiver did a very good job in spite of that.

Another Quiver feature I'd love to see is perspective mode with keyboard navigation akin to walking or flying around in a game.

BobimusPrime
2003.07.26, 03:43 PM
A new version is up. Took quite a while putting the animation stuff in. The documentation isn't great so if you have any questions on how to use it let me know. Should be the same link as the first post, but I'll post it again.

http://www.bobbosoft.com/Coalesce.sit

Hopefully there aren't too many major bugs :). Enjoy!

Robert

Feanor
2003.07.28, 11:13 PM
I now realize why all the programs I have tried for 3D have been not exactly what I was looking for -- everybody is making modellers! As in, to make solid models with, for characters and the like. It looks like I have been trying to fit Coalesce into the wrong category.

Bobimus, have you any plans to make this more suitable for level design? If not, I understand. I just can't find anything that works well for it. Coalesce, for example, will not let me go "inside" a model. I was trying to make a simple model of a house, and I couldn't do it because I couldn't work on the interior unless I did it in layers. You cannot select triangles behind other triangles, even if they are hidden. Is that on purpose, or a bug?

BobimusPrime
2003.07.29, 03:24 PM
Feanor,

I definitely want Coalesce to work for designing levels. Eventually I'll need to make levels of some sort and I probably don't want to write an entirely new modeller for it! The selection in Coalesce is designed for you to select whatever triangle you see under the mouse cursor. Unless of course a triangle is completely transparent. If you hide a triangle and you can't select the triangle that is then visible behind it then yes that is definitely a bug. The hiding feature is supposed to just remove objects from the scene until you want them again. I'm not at my computer right now but I'll check out that bug as soon as possible.

What features would you want to be in Coalesce for level design? I really haven't thought about that before.

It would be interesting to actually use animation in levels when designing them. The animation was definitely intended for models not levels but you never know...

Robert

Feanor
2003.07.29, 08:18 PM
Designing character models and levels could be seen as having a lot in common technically, but a lot of differences in terms of how they are made. (I'm just riffing here, btw.)

Models are going to break down into organic and artificial subjects. Organic stuff wants lots of hands on tweaking to make it look natural, but mechanical stuff is usually about making the lines properly regular. Designing levels can break into organic and artificial too, but I think most times they are pretty geometric.

So to make nice levels, you need ways to make sure things are aligned, balanced, at the correct angles to one another, the same size, and otherwise geometrically nice. That usually means you need guide-lines (and guide surfaces, too!), measuring tools, and the ability to specify vertex and edge values (entering numbers into edit boxes) and to clone different chunks of vertices.

One thing I would really love is a way to sketch out volumes with translucent shapes (primitives, especially boxes and cones), which would be yet another kind of guide object. When they are set where you want them, a toggle would make them non-selectable so you wouldn't accidentally move them. Same for guide surfaces and guide lines. When I'm drawing on paper, I always start with defining one or more surfaces as the general shape of my design, especially the ground surface. (The ability to make irregular terrain would be wonderful, but is not essential.)

I've always been looking for an application that would give me the sense that I was moving real things around, but that I could have ghostly things and solid things at the same time, and also be able to decompose and combine those things, without interfering with other things. I could plop down a cube and then drag it around as a solid thing, or edit its vertices individually. Or I could do things as they are now, just place vertices and make triangles out of them, but then combine triangles into unique objects which I could copy and paste at will, and then re-size (as I already can).

There are two view features that I would love to have; both would be to allow to see "inside" a model. The first is a normal perspective view; the second is clip planes. OpenGL already allows you to do both, so they should be easy to implement. Perspective is not much use for modelling, since it is hard to guage where things are exactly, but it would let you fly inside parts of a level to ensure that they are looking good. Clip planes allow you similar freedom to reveal areas normally hidden in orthographic view, by hiding of entire sections of the model.

Clip views would be my wish for next feature, followed by automatically adjusting grid, guide lines/polygons, named groups, pre-fabricated primitives, and finally a perspective viewpoint.

I guess I would also like to be able to specify whether a polygon was just visible or both visible and solid, for an engine that used collision detection. (Actually, the visible-only ones are similar to guides, except that guides are not likely to be texture-mapped...)

In the long term, a level design application would need a means to specify the locations of entities, including characters/monsters, items, spawn points, camera locations, lights, and all that.

diordna
2003.07.29, 10:35 PM
Could someone tell me how to make an animation? Moving bones around doesn't seem to do anything.

Oh, and when you move bones, shouldn't the vertices move with them? When I move bones now, just the bones move. Maybe this is why I'm having trouble animating.

BobimusPrime
2003.07.30, 09:18 AM
diordana:

I apologize for the animation stuff not being obvious. You could figure it out from the readme but it would be better if that wasn't necessary.

The way you enable animation is by clicking on the frame checkbox in the render section of the tools window. An animation panel should pop up. It is important that you attach the vertices to all of the bones before you attempt to animate because the vertices won't move otherwise.

In frame mode you can click on the bones and use the transform tools to rotate and scale the bones. Also if you want the whole model to rotate or scale you can just deselect all of the bones and use the transform tool. Finally if you want to move the whole model just click and drag on the background of the work space and the whole model should move.

Once you have set up some frames of animation you can click on the animate checkbox in the render section of the tools window. The model will animate but you might notice that many of the controls in the animation window are disabled. The only one that I allow to be used during animation is the control to change the speed of the animation.

Robert

BobimusPrime
2003.07.30, 09:31 AM
Feanor,

The thing you said about going inside the model by hiding the outside stuff was definitely a bug. I fixed it and the link should be the same as before. The version number didn't change (because I only changed 1 thing :)) but it works now. Thanks for letting me know.

I think I'm starting to understand what you meant by grouping objects. What you described sounds really good. I'll start working on that.

By the way, if anyone has some models they made with Coalesce that they would like to have on display on my site or in the download or whatever, please let me know.

Robert

igame3d
2003.07.31, 09:19 PM
Hey Bob,
I'm getting an unexpected quit trying to save to coal format. Is very simple mesh, I was just trying to compare 3D formats (ugh 90% of them are not even readable by the human eye), and wanted to see this simple quad in coal format.

The mesh what quits (http://www.igame3d.com/quadx4mesh.sit)

As far as I can tell the file doesn't save at all.
See whats up.

Thanks

Oddly enough, it unexpected quits when I just drew 4 points, 2 triangles, and saved.

DOH!

Yep, its the coal format. Meshwork format seems to save fine.

BobimusPrime
2003.08.01, 09:08 AM
It's amazing what missing 1 line of code will do :). It's fixed and the download should be 1.0.7b now. Thanks for finding that.

Robert

Kjurtyl
2003.08.02, 05:19 PM
Well, I finally sat down and tried Coalesce after telling myself I would when it was first presented here.

Overall, Coalesce left a good impression on my mind, but I find there are still many rough edges.

I was a bit disconcerted that I couldn't get the grid to display on screen unless it had some very specific (read limiting) combinations chosen. I'd prefer if the grid size and distribution was a little more straightforward than it is right now. Also being able to define units, like 1 square = 1 m or something similar would be beneficial. As has been noted elsewhere in this thread, being able to play with the size of the vertices directly would be a big big plus.

Also, how do I move a group of vertices/triangles around relative to another group without just moving the camera? As my test model I tried replicating a MiG Foxbat and the wings didn't line up with the fuselage on the z plane but I could find no way to move things around so it would line up.

A multi-extrude option would be great, where by choosing similar shapes at a certain interval from each other the program would automagically properly extrude between them.

- Kjurtyl.

BobimusPrime
2003.08.02, 07:25 PM
Kjurtyl:

You should be able to change the size of the vertices in the preferences window. Do you think there should be more sizes to choose from? I could just set it to a floating point number and let the user pick whatever they want.

The grid size thing is a little bit strange I admit. I just found that if you get used to it it's a lot better than actually picking the number of units between grid dots. I figure it's more realistic to have the grid size be related to multiples of ten.

You move a group of vertices by selecting them and then dragging on one of the vertices selected. The triangles will just move with them.

I'm not sure what you mean by the multi-extrude option. Would you have two objects and then create a tube connecting them? I should make a mirroring sort of feature or at least something to extrude between two open objects. Creating symmetric objects is a pain without them.

Thanks for your input.

Robert

Kjurtyl
2003.08.03, 07:32 PM
Well, though I have my reservations about your comments on grids, I think maybe if we could further subdivide it in more than 5 divisions it might have more uses (up to 10 maybe?). Right now, there's still some "holes" when I move from size to size.

One thing I really hate is when I extrude something that doesn't fill up a entire grid square it will resize the set of triangles to the nearest grid square if I happen to move them. Relocation is one thing, but resizing? That's infuriating.

Size of vertices is ok. I really just wanted something a little smaller, a little closer to the points of the grid.

Maybe it's just me, but I really like to mess with the dimensions of a triangle numerically more than visually.

Two objects and interpolating a tube between them is sorta what I am looking for, though think for more than 2 objects. I have an example set up with my MiG at:
Note: copy/paste that into your browser because GeoCities doesn't allow linking. :p
http://www.geocities.com/kjurtyl/MiG1.html,
change the 1 for a 2 or 3 to see all the screenshots I have of it.

The piece of fuselage between the two jets and the cockpit is what brought up the multi-extrude issue.

I had to copy/paste and rotate my wingtips to get them. A symmetrical duplication tool would be *great*.

The model is available upon request.

- Kjurtyl.

diordna
2003.08.04, 08:32 AM
Do I get brownie points if I use Coalesce for a couple of models for powerups in my uDG entry? :)

igame3d
2003.08.12, 02:46 AM
Oh Roberto? Where are you?
iGame3D Now Supports Coalesce Models.
See me in iChat for the latest build.
and a special Tobi snack.

BobimusPrime
2003.08.12, 03:02 PM
Hey, sorry I haven't been around. Just been finishing up my paper for this summer's research project. I'll be back soon! I promise!

Robert