The project is reaching its end and we are reaching our goals. The work on the importer is at its end and the exporter should be almost finished.
Currently we can load a model from a wavefront obj file and read which textures goes where from the mtl file.
(Special thanks to dragon_child for uploading the original model)
We are finalizing the work on the exporter. When exporting we generate a ‘texture’ containing all the colours of all the voxels. The UV coordinate of each voxel is set so it matches the colour on said texture. It should be visually seen next when when it’s actually done.
- support for undo and redo in the editor
- some small changes to prevent some memory leaks.
We are progressing a bit faster than expected. The major features of the exporter and importer is already complete.
Here is a model (special thanks to tf3dm.com and the user 3dregenerator for uploading it)
Here is the model imported into our program.
That didn’t look right. The bicycle is so small we have to scale it. Here is the resizing progress.
Looks pretty good. Except for the lack of textures and blocky shape. That is for next weeks work.
For now we have to make do with colouring it ourselves.
We have added a custom colour picker to the editor that can store and edit the current colour using HSV(hue, saturation, value).
Qt had a built in colour picker dialog, but it had some bugs that were not fixed in the latest version of Qt.
We can also save and load models using our own format, without loss of quality or colours.
The editor has many new features, such as:
- Changes and fixes to make the program more user friendly
- Paint mode
- Add/Remove large amount of voxels at the same time
- Can receive the colour of selected cube
This week we have started on, and finished shaders.
In the future we probably want to add some kind of reflection on the voxels.
The work on the exporter has begun. Currently we can export vertices, UVs and normals. The UV is not editable in the editor and the exporter does not support it (yet?).
The first picture below shows the model in the editor.
And this picture shows the model loaded in another program. Oops, looks like different chunks mess up the location of the voxels.
After a little more work we got it working. Here is the model in Maya.
We do want to minimize the number of faces (vertices), which means the smaller voxels (seen in the picture with our model in Maya) will be merged into a larger one.
We have created a prototype that can handle voxels by adding or removing them with the help of a dynamic brush that specifies the area.
The large red cubes are the chunks. The cubes within are the voxels.
When a voxel is placed, the chunk is calculating its mesh. So all the voxels aren’t drawn, but only the faces pointing out.
We have prioritized performance much less. Since we’ll only make a voxel modeller we don’t really need to support an arbitrary size of voxels on each direction. It has and will save us a lot of developing time.
The full report on all these issues can be seen in our analysis in MS2.