"Dreaming" - 3D Modelling Tool
"Dreaming" - 3D Modelling Tool
I want to do more research before starting, so this initial post is just to get feedback/suggestions on the idea first.
EDIT: Dear Moderators, I made the mistake of posting before reading the Project Announcment forum rules, and have not included any proof of my work. This topic is useful to me however in getting opinions purely on the ideas. Please move this post to General Discussion instead of deleting it, as it is still useful to me, if it is not welcome here. Thank you.
The Project:
- "Dreaming" (title may be revised)
- 3D model editor (only .obj atm)
- Opensource
- Will be written in C++ using Irrlicht with OpenGL graphics
- Uses features not found in other editors, so it is not a conventional model editor
- Likewise, it is missing features that are common among other editors
- But it is meant to be an extremely convenient tool
- Aimed solely at game development, so it is inconvenient to use with high poly count models
- Other editors with more features can be used to refine the results of a model created in Dreaming
The Good:
- Convenient to use
- Focus on using depth cues so that a 3d model can be drawn from one point of view with a photograph/artwork of the object as a backdrop. This allows the use of the skills of traditional artists in the model making process.
- The depth cues are:
....... - 'Stereoscopic flicker' (manual or automatic)
....... - Stereo red/cyan anaglyph (may not use)
....... - Audio (may not use) - different Sounds emanate from different points as you
....... modify the position of the point (hear sounds through the ‘ears’
....... of the point being moved) to give you a feel for it’s position
....... relative to those other points
- Simple controls for adjusting points and faces
- Movement controls give alot of freedom and don't force the user to rotate around / zoom into a single axis/origin
- Features 5 different independent undo systems, expanding the ‘undo’ functionality beyond just Undoing
- Texturing is a simple map-each-3D-face-onto-part-of-a-2D-texture system
The Bad:
- Only supports .obj format (because it is simple and is compatible with irrlicht)
- No support for curves (no curve information should be lost however when saving out an imported model)
- No support for lines
- No animation support
- Does not support typical editor functions, such as extrusion, bevelling, ...etc (if a script system is added it can make such things possible)
Motive:
- To practice my programming skills, especially with Irrlicht
- Create useful software for myself and for others
- Learn and practice more difficult 3D maths, which can be applied to future projects
- Create a 3D modeller that has the same ease-of-use as Paint Shop Pro (v9)
- Certain parts of the project are based on Paint Shop Pro
But Is It Too Ambitious:
- It may very well be, but I have to try
- My plan is to start small and simple and add these features from there
- I will be regularly posting download links to my code to get your help and feedback for:
....... - If my code is garbage
....... - If there is a more optimal way to do things
....... - Testing
....... - Help on difficult concepts (my 3D mathematical understanding certainly isn't perfectly comprehensive)
....... - Community input so that the project is more generally useful
....... - To keep me going when I am discouraged
- I have limited time in which to work on the project so I MAY need outside help, and this is the best place to get it
- If the project were to fail because of lack of time, I would have learnt a great deal from attempting it (but I certainly don't intend on giving up)
The Following Plan:
- Anything between a pair of '?' is a feature I may not add, as they are difficult or may not be absolutely necessary. In particular outside help would make a big difference here later.
- It's a long read so don't read unless you're interested
after reading the above
Plan:
Menus / Buttons:
File: New | Open | Close | Save | Save As | Save Copy As
Texture: Load (only a single texture can be used)
Edit: Cut | Copy | Paste | Delete | Undo Step | Redo Step | Undo Camera Movement | Redo Camera Movement | Undo Texture UV | Redo Texture UV | Undo Clipboard Copy | Redo Clipboard Copy | Undo Selection | Redo Selection | Select All | Select All Group(s) Of Selected Points/Faces | Select None / Cancel
Backdrop: Load | Show | Don’t Show
View: Perspective | Ortho | ?Planometric? | ?Isometric? | Top View | Front View | Side View
Stereo: No | Stereo Left | Stereo Right | Flickering | ?Stereo Anaglyph (only works in Perspective view)?
Points Visible: Yes | No
Faces: Wireframe | Flat (normal-based lighting) | Texture (no lighting when modifying texture UV)
Origin: Move | Move Depth | Move To Point(s) (moves to ‘box’ centre if multiple points) | Properties
Group: Show All | Show Group(s) Of Selected Points/Faces
Script: ?Load? | ?Build Shape (mathematically generated 2D or 3D)?
Add: Point (normal is determined from current origin) | Face (normal is determined by the order of connecting points)
Modify: Rotate (around origin) | Scale (from origin) | Move (camera direction as origin, moves ‘along’ the screen) | Move Depth | ?Use Script Modifier? | Texture UV (causes the texture editor window to appear) | Flip Face Normal | Properties Of Selected (opens properties window(s))
Point Normal(s): Set From Origin | Set To Origin
Axis (which axis the modifiers apply to): X | Y | Z (some controls such as Move Depth only use the Z axis anyway)
Snap To: None | Other Points (lines up with other nearby points) | Grid | Other Points And Grid
Grid: Size
Select Occluded: Yes | ?No?
Camera: Align With Normal Of Point | Align With Face Normal | Properties
Preferences: Undo Memory Limit | Camera Movement Speed | Modifier Effect Rate | Stereo Settings | ?Isometric/Planometric Settings? | ?Audio Depth Cue Settings?
Add Extra Information To Files (as comments in header): No | Texture (and/or)| Undo History (and/or)| Workspace
Help (status bar help and external documentation for writing scripts may be provided): Basics | Keys | About
Basic Controls:
Holding Ctrl causes modifiers (or tools) to be applied faster and movement controls to move further.
LMB – adds things / modifies things / adjusts texture UV of selected objects.
RMB – rotate camera around nearest point (vertex) to mouse at moment pressed
MMB – move camera along x, y axis (like 3D strafing)
Mouse Wheel – move camera towards / away from nearest point to mouse at moment pressed (moving not zooming)
W,A,S,D and Arrow Movement Keys – move fps style
Space or Numpad 0 – Like jump
Z or Numpad 1 – Like duck
Using Shift with RMB will rotate the camera fps style.
Holding Shift when pressing LMB selects objects additively. Dragging the mouse creates a bounding selection box. Selection is made with nearest object to mouse (so no accidental select none if the mouse is not directly over the point).
Holding Alt when pressing LMB deselects objects individually. Dragging the mouse creates a bounding selection box. Selection is made with nearest object to mouse.
Pressing the Escape key will Select None/Cancel.
Texture UV Control Window:
A window with the texture that has been loaded into the editor is shown.
The texture is not imbedded in the file.
A link to the texture is imbedded in the file as a comment instead.
Selected triangles will appear in this window, where they can be moved / modified to map to the texture.
A move/rotate/scale option is provided in the window.
Point Properties:
Selected point properties.
Vector settings that vary between multiple points display x, and some VERY SIMPLE mathematical functions can be used with this.
The following are valid: x+5, x-2, x/2, 5-2, x, x*1.2, x/-2.5, x@-10 (rotate command, changes other vector values to rotate around axis). Rotate works slightly differently with 2D vector values.
Only +, -, *, /, @, are allowed between x (or a number) and the number. So x/2+5 is not valid. This may be improved if script functionality is added.
Properties:
X, Y, Z
Normal X, Normal Y, Normal Z
Texture U, Texture V
?Sound (depth cues; auto-assigns a random unique sound)?
Group
Face Properties:
Same simple math system as Point Properties.
Properties:
Point A, Point B, Point C
Flipped Normal: Yes | No | Toggle
Group
Texture Map Face Properties:
Same simple math system as Point Properties.
Properties:
Point A: X, Y, Z
Point B: X, Y, Z
Point C: X, Y, Z
Group
Camera Properties:
Same simple math system as Point Properties.
Properties:
X, Y, Z
Direction X, Direction Y, Direction Z
Target X, Target Y, Target Z (only valid if no Direction is specified after target is specified)
Origin Properties:
Same simple math system as Point Properties.
Properties:
X, Y, Z
?
Preview Window:
The preview window displays another view of the screen (just for display not for editing).
Has similar functionality to the Paint Shop Pro preview.
However, because it is 3D it has a number of modes more than Paint Shop Pro does:
Stereoscopic Anaglyph: ?Yes? | No
Show: All | Selected | Selected Group(s)
View: Animated Perspective | Perspective | Ortho | ?Planometric? | ?Isometric? | Top View | Front View | Side View
Animation: Camera 1 (rotating) | Camera 2 (rotating semicircle) | Camera 3 (Moving stereo) | Camera 4 (Switch views from different angles)
?
EDIT: Dear Moderators, I made the mistake of posting before reading the Project Announcment forum rules, and have not included any proof of my work. This topic is useful to me however in getting opinions purely on the ideas. Please move this post to General Discussion instead of deleting it, as it is still useful to me, if it is not welcome here. Thank you.
The Project:
- "Dreaming" (title may be revised)
- 3D model editor (only .obj atm)
- Opensource
- Will be written in C++ using Irrlicht with OpenGL graphics
- Uses features not found in other editors, so it is not a conventional model editor
- Likewise, it is missing features that are common among other editors
- But it is meant to be an extremely convenient tool
- Aimed solely at game development, so it is inconvenient to use with high poly count models
- Other editors with more features can be used to refine the results of a model created in Dreaming
The Good:
- Convenient to use
- Focus on using depth cues so that a 3d model can be drawn from one point of view with a photograph/artwork of the object as a backdrop. This allows the use of the skills of traditional artists in the model making process.
- The depth cues are:
....... - 'Stereoscopic flicker' (manual or automatic)
....... - Stereo red/cyan anaglyph (may not use)
....... - Audio (may not use) - different Sounds emanate from different points as you
....... modify the position of the point (hear sounds through the ‘ears’
....... of the point being moved) to give you a feel for it’s position
....... relative to those other points
- Simple controls for adjusting points and faces
- Movement controls give alot of freedom and don't force the user to rotate around / zoom into a single axis/origin
- Features 5 different independent undo systems, expanding the ‘undo’ functionality beyond just Undoing
- Texturing is a simple map-each-3D-face-onto-part-of-a-2D-texture system
The Bad:
- Only supports .obj format (because it is simple and is compatible with irrlicht)
- No support for curves (no curve information should be lost however when saving out an imported model)
- No support for lines
- No animation support
- Does not support typical editor functions, such as extrusion, bevelling, ...etc (if a script system is added it can make such things possible)
Motive:
- To practice my programming skills, especially with Irrlicht
- Create useful software for myself and for others
- Learn and practice more difficult 3D maths, which can be applied to future projects
- Create a 3D modeller that has the same ease-of-use as Paint Shop Pro (v9)
- Certain parts of the project are based on Paint Shop Pro
But Is It Too Ambitious:
- It may very well be, but I have to try
- My plan is to start small and simple and add these features from there
- I will be regularly posting download links to my code to get your help and feedback for:
....... - If my code is garbage
....... - If there is a more optimal way to do things
....... - Testing
....... - Help on difficult concepts (my 3D mathematical understanding certainly isn't perfectly comprehensive)
....... - Community input so that the project is more generally useful
....... - To keep me going when I am discouraged
- I have limited time in which to work on the project so I MAY need outside help, and this is the best place to get it
- If the project were to fail because of lack of time, I would have learnt a great deal from attempting it (but I certainly don't intend on giving up)
The Following Plan:
- Anything between a pair of '?' is a feature I may not add, as they are difficult or may not be absolutely necessary. In particular outside help would make a big difference here later.
- It's a long read so don't read unless you're interested
after reading the above
Plan:
Menus / Buttons:
File: New | Open | Close | Save | Save As | Save Copy As
Texture: Load (only a single texture can be used)
Edit: Cut | Copy | Paste | Delete | Undo Step | Redo Step | Undo Camera Movement | Redo Camera Movement | Undo Texture UV | Redo Texture UV | Undo Clipboard Copy | Redo Clipboard Copy | Undo Selection | Redo Selection | Select All | Select All Group(s) Of Selected Points/Faces | Select None / Cancel
Backdrop: Load | Show | Don’t Show
View: Perspective | Ortho | ?Planometric? | ?Isometric? | Top View | Front View | Side View
Stereo: No | Stereo Left | Stereo Right | Flickering | ?Stereo Anaglyph (only works in Perspective view)?
Points Visible: Yes | No
Faces: Wireframe | Flat (normal-based lighting) | Texture (no lighting when modifying texture UV)
Origin: Move | Move Depth | Move To Point(s) (moves to ‘box’ centre if multiple points) | Properties
Group: Show All | Show Group(s) Of Selected Points/Faces
Script: ?Load? | ?Build Shape (mathematically generated 2D or 3D)?
Add: Point (normal is determined from current origin) | Face (normal is determined by the order of connecting points)
Modify: Rotate (around origin) | Scale (from origin) | Move (camera direction as origin, moves ‘along’ the screen) | Move Depth | ?Use Script Modifier? | Texture UV (causes the texture editor window to appear) | Flip Face Normal | Properties Of Selected (opens properties window(s))
Point Normal(s): Set From Origin | Set To Origin
Axis (which axis the modifiers apply to): X | Y | Z (some controls such as Move Depth only use the Z axis anyway)
Snap To: None | Other Points (lines up with other nearby points) | Grid | Other Points And Grid
Grid: Size
Select Occluded: Yes | ?No?
Camera: Align With Normal Of Point | Align With Face Normal | Properties
Preferences: Undo Memory Limit | Camera Movement Speed | Modifier Effect Rate | Stereo Settings | ?Isometric/Planometric Settings? | ?Audio Depth Cue Settings?
Add Extra Information To Files (as comments in header): No | Texture (and/or)| Undo History (and/or)| Workspace
Help (status bar help and external documentation for writing scripts may be provided): Basics | Keys | About
Basic Controls:
Holding Ctrl causes modifiers (or tools) to be applied faster and movement controls to move further.
LMB – adds things / modifies things / adjusts texture UV of selected objects.
RMB – rotate camera around nearest point (vertex) to mouse at moment pressed
MMB – move camera along x, y axis (like 3D strafing)
Mouse Wheel – move camera towards / away from nearest point to mouse at moment pressed (moving not zooming)
W,A,S,D and Arrow Movement Keys – move fps style
Space or Numpad 0 – Like jump
Z or Numpad 1 – Like duck
Using Shift with RMB will rotate the camera fps style.
Holding Shift when pressing LMB selects objects additively. Dragging the mouse creates a bounding selection box. Selection is made with nearest object to mouse (so no accidental select none if the mouse is not directly over the point).
Holding Alt when pressing LMB deselects objects individually. Dragging the mouse creates a bounding selection box. Selection is made with nearest object to mouse.
Pressing the Escape key will Select None/Cancel.
Texture UV Control Window:
A window with the texture that has been loaded into the editor is shown.
The texture is not imbedded in the file.
A link to the texture is imbedded in the file as a comment instead.
Selected triangles will appear in this window, where they can be moved / modified to map to the texture.
A move/rotate/scale option is provided in the window.
Point Properties:
Selected point properties.
Vector settings that vary between multiple points display x, and some VERY SIMPLE mathematical functions can be used with this.
The following are valid: x+5, x-2, x/2, 5-2, x, x*1.2, x/-2.5, x@-10 (rotate command, changes other vector values to rotate around axis). Rotate works slightly differently with 2D vector values.
Only +, -, *, /, @, are allowed between x (or a number) and the number. So x/2+5 is not valid. This may be improved if script functionality is added.
Properties:
X, Y, Z
Normal X, Normal Y, Normal Z
Texture U, Texture V
?Sound (depth cues; auto-assigns a random unique sound)?
Group
Face Properties:
Same simple math system as Point Properties.
Properties:
Point A, Point B, Point C
Flipped Normal: Yes | No | Toggle
Group
Texture Map Face Properties:
Same simple math system as Point Properties.
Properties:
Point A: X, Y, Z
Point B: X, Y, Z
Point C: X, Y, Z
Group
Camera Properties:
Same simple math system as Point Properties.
Properties:
X, Y, Z
Direction X, Direction Y, Direction Z
Target X, Target Y, Target Z (only valid if no Direction is specified after target is specified)
Origin Properties:
Same simple math system as Point Properties.
Properties:
X, Y, Z
?
Preview Window:
The preview window displays another view of the screen (just for display not for editing).
Has similar functionality to the Paint Shop Pro preview.
However, because it is 3D it has a number of modes more than Paint Shop Pro does:
Stereoscopic Anaglyph: ?Yes? | No
Show: All | Selected | Selected Group(s)
View: Animated Perspective | Perspective | Ortho | ?Planometric? | ?Isometric? | Top View | Front View | Side View
Animation: Camera 1 (rotating) | Camera 2 (rotating semicircle) | Camera 3 (Moving stereo) | Camera 4 (Switch views from different angles)
?
Last edited by IrrWHAT?! on Mon Jul 07, 2008 5:50 am, edited 1 time in total.
that's very interesting.
well, if you can find a way how to re-write some of the code in such a way they will not be considered a scene node, i'm sure your idea will fly right away.
my procedural building is crawling because i still lack a huge amount of knowledge. i'm hoping your paper/effort will help me move it forward.
also, rotation by quaternions is very important coz slerp is right behind it. smooth interpolation is key as well.
i would encourage you to go for it, in the name of science, err i mean self-study.
well, if you can find a way how to re-write some of the code in such a way they will not be considered a scene node, i'm sure your idea will fly right away.
my procedural building is crawling because i still lack a huge amount of knowledge. i'm hoping your paper/effort will help me move it forward.
also, rotation by quaternions is very important coz slerp is right behind it. smooth interpolation is key as well.
i would encourage you to go for it, in the name of science, err i mean self-study.
[quote="dlangdev"]also, rotation by quaternions is very important coz slerp is right behind it. smooth interpolation is key as well. [quote]
<offtopic>
Quarternions are really all that important, considering it's just as easy to do it with 3x3 matrices. You can check it out at GameDev. I don't remember the actual name of the article.
</offtopic>
And to IrrWhat?!, if you feel like you want to do this project, then I would say you should do it. It's always good to study.
<offtopic>
Quarternions are really all that important, considering it's just as easy to do it with 3x3 matrices. You can check it out at GameDev. I don't remember the actual name of the article.
</offtopic>
And to IrrWhat?!, if you feel like you want to do this project, then I would say you should do it. It's always good to study.
TheQuestion = 2B || !2B
-
- Posts: 368
- Joined: Tue Aug 21, 2007 1:43 am
- Location: The Middle of Nowhere
Uh, most modelers would be the first to tell you that these features are invaluable for modeling. Especially when it comes to low-poly models for games. Otherwise, a lot of time has to be wasted combining verticies along the edges.Does not support typical editor functions, such as extrusion, bevelling, ...etc (if a script system is added it can make such things possible)
rogerborg wrote:Every time someone learns to use a debugger, an angel gets their wings.
-
- Posts: 219
- Joined: Fri Apr 13, 2007 8:29 pm
- Location: Illinois
- Contact:
No kidding! Anything that doesn't have extrusion of any sort is not something I will ever be caught using.Dark_Kilauea wrote:Uh, most modelers would be the first to tell you that these features are invaluable for modeling. Especially when it comes to low-poly models for games. Otherwise, a lot of time has to be wasted combining verticies along the edges.Does not support typical editor functions, such as extrusion, bevelling, ...etc (if a script system is added it can make such things possible)
FlyingIsFun1217
Thank you for all your positive responses!
I always wondered what quaternions were. I can't believe there's a use for complex numbers in computer programming
Smooth interpolation? As I said, animations will not be supported. Animations can be done with other model editors, which are much more competant at it than I would be.
The idea is that the editor will be a more "organic" model editor, for artists like me who would prefer to build 3D objects using my own feel for where everything should be, rather than a mathematical CAD style creation. Other model editors can be used to refine this, so Dreaming is a step in the modelling process. When dealing with organic objects, a CAD program isn't aproapriate, and this is the focus of the project; Using traditional artistic skills to create 3D objects. I know it's being ignorant of the features of the modern computer media of modelling, but it provides some comfort for more traditional artists, or for those who are stronger in those skills. Personally, I can handle the technological arts, but some things are still done easier with old methods. Some basic support for precise modelling is provided, but is not the primary focus. For this reason, I don't want to take the extra effort in putting in features like bevelling, extrusion...etc. Also, the idea is that the entire model is created initially in it's entirety, so such features should not be needed.
I'll make my own scene node that renders the model with an indexed triangle function for faces (and points, lines..etc).dlangdev wrote:well, if you can find a way how to re-write some of the code in such a way they will not be considered a scene node, i'm sure your idea will fly right away.
dlangdev wrote:paper/effort
dlangdev, your response made me laugh . I'm certainly not an expert myself, but atleast it can be a learning experience for both of us. I'm in highschool, doing a mathc coarse, so my mathematical insight is only just beginning to develop.dlangdev wrote:in the name of science, err i mean self-study
I always wondered what quaternions were. I can't believe there's a use for complex numbers in computer programming
Smooth interpolation? As I said, animations will not be supported. Animations can be done with other model editors, which are much more competant at it than I would be.
Dark_Kilauea, you're probably right. I can always extend it later, if there is a dying need for it.Dark_Kilauea wrote:Uh, most modelers would be the first to tell you that these features are invaluable for modeling
The idea is that the editor will be a more "organic" model editor, for artists like me who would prefer to build 3D objects using my own feel for where everything should be, rather than a mathematical CAD style creation. Other model editors can be used to refine this, so Dreaming is a step in the modelling process. When dealing with organic objects, a CAD program isn't aproapriate, and this is the focus of the project; Using traditional artistic skills to create 3D objects. I know it's being ignorant of the features of the modern computer media of modelling, but it provides some comfort for more traditional artists, or for those who are stronger in those skills. Personally, I can handle the technological arts, but some things are still done easier with old methods. Some basic support for precise modelling is provided, but is not the primary focus. For this reason, I don't want to take the extra effort in putting in features like bevelling, extrusion...etc. Also, the idea is that the entire model is created initially in it's entirety, so such features should not be needed.
lol I write replies slowly.
In the time it took me to write that last post FlyingIsFun1217 had put his reply up.
So I didn't see your post when I wrote that, FlyingIsFun.
In that case, I will consider such features.
Thanks for your input.
In the time it took me to write that last post FlyingIsFun1217 had put his reply up.
So I didn't see your post when I wrote that, FlyingIsFun.
FlyingIsFun1217 wrote:No kidding! Anything that doesn't have extrusion of any sort is not something I will ever be caught using.
In that case, I will consider such features.
Thanks for your input.
Extrusion of points can be achieved by copying and pasting the selected points and moving them outward in a linear
direction. And beveling can be achieved by selecting the points to be beveled and scaling inward along the plane of the
face of that surface.
Naturally, features like that would be supported (eg. the use of "Camera: Align With Face Normal", for bevelling
or extruding at non-orthogonal angles).
I can see how a shortcut function for such actions would be useful. Would the following extrusion be suitable?
T = Textured; R = Removed Face; N = Not Textured
Textured quad face:
Extruding outward:
Beveling only modifies points, and should have no impact on face textures.
Are there any other functions that people want?
direction. And beveling can be achieved by selecting the points to be beveled and scaling inward along the plane of the
face of that surface.
Naturally, features like that would be supported (eg. the use of "Camera: Align With Face Normal", for bevelling
or extruding at non-orthogonal angles).
I can see how a shortcut function for such actions would be useful. Would the following extrusion be suitable?
T = Textured; R = Removed Face; N = Not Textured
Textured quad face:
Code: Select all
*\
| \
| \
* T *
\ |
\ |
\*
Code: Select all
*-------------*\
| . N | \
|__.__________| T\
*\ R , . . . . * ..*
\ . \ |
\ . N \ |
\*__._________\*
Are there any other functions that people want?
you have a very bright future ahead of you young man.
just keep going, it's the journey that matters for some, the destination is optional.
seriously, there's a mountain of evidence, written posts here now showing or even documenting the many who swore to start something, only to fade away into the sunset.
i suggest you become a member of a local gamedev club. we have one here and i attend on some of the meetings. that will keep your interest going coz you're going to lose it when things get pretty boring and tough.
just keep going, it's the journey that matters for some, the destination is optional.
seriously, there's a mountain of evidence, written posts here now showing or even documenting the many who swore to start something, only to fade away into the sunset.
i suggest you become a member of a local gamedev club. we have one here and i attend on some of the meetings. that will keep your interest going coz you're going to lose it when things get pretty boring and tough.
-
- Posts: 219
- Joined: Fri Apr 13, 2007 8:29 pm
- Location: Illinois
- Contact: