Hello! 🏄♂️
I am a postdoctoral researcher and teacher at Computer Graphics Group at Charles University and I am also a co-founder of Additive Appearance focusing on high-quality color 3D printing.
Pepr3D - Multi-material 3D painting editor
License: Other
Hello! 🏄♂️
I am a postdoctoral researcher and teacher at Computer Graphics Group at Charles University and I am also a co-founder of Additive Appearance focusing on high-quality color 3D printing.
Written by @Arokip
Review by Me
after painting a circle over two triangles that has shared vertices corrected.
Double click might be better.
Menu does not close after clicking Export
The file menu (Open,Save,Save As, Export) does not close after clicking Export, user needs to click away to close the menu.
See issue #4 , same.
Merge checklist
Missing implementation
Performance
Lots of time spent converting detail triangles back to polys
Multithreading
BOLD means DONE.
Structure:
in the following, elaborate on classes, what they do, how they are connected, what is ours/what is a library thing
Might be related to a bad normal. Fix might be already on the way by @Arokip
Painting without continuous is still limited to continuous triangles. Highlight behaves correctly
Pepred crashes with uncaught cgal exception when using triangle painter on this mesh: DIAMOND.stl
Callstack callstack img
Start with an abstract of sorts, you could also see it as an 'executive summary'. Good place to put it would be right before Section 1.1, before you start explaining all the prerequisites. 1-2 sentences what the project is about is enough, and you can also include a brief overview of Chapter 1, so if the reader has any questions they know upfront they will be answered soon.
Try avoiding the use of vague terms such as "we aim", "should" etc. If you are reasonable sure that something is going to happen, you can commit to it. That way you separate the certain features from the intended but bonus ones. Prime example is Section 1.4. Same goes for challenges (1.6) - if you know something is nontrivial, you don't need to conjecture it with "could be difficult" etc.
I would swap 1.5 and 1.6. That way it's going to be clearer that the existing SWs don't do what we want.
Chapter 2 starts a little bit 'out of blue', would be good to include a summary what it's describing and its structuring.
The bucket painting is one of the most important tools, so some more care should go into explaining it: especially the stopping criteria, the SDF and so on.
When event handling takes too long another event of the same type can spawn. Because draw() is delayed until all events are processed this causes noticable delay between drawing and painting with brush. Even though individual strokes take ~ 30 ms.
Needs workaround / fix
To UI
Chapter 4 should have a achitecture overview image at the very beginning which highlights which part of the pipeline the chapter is about. Something like this:
Once @tomasiser finalizes the image for Chapter 3, it should be added to Chapter 4 as well.
"turagadume.stl" or "Cool_Luulia-Bigery.stl" is not paintable with brush. Area highlight preview works.
Neither detail, or respect triangles mode works.
For "Cool_Luulia-Bigery.stl" Area highlight does not work,
Probably copy paste ObjExporter
from assimp/assimp#1931
For the attached object, the normals generated by assimp end up being -nan and do not pass this assert https://github.com/tomasiser/pepr3d/blob/master/src/geometry/ModelImporter.h#L232
Please find out what is going on and fix it.
diamond.zip
(contains the original .stl and an .obj fixed by Slic3r PE, but both of them do not work in Pepr3D)
Currently, if a user loads a non-polyhedron model, the polyhedron does not get built, gets emptied and bucket painting doesn't work. CI_LOG_E is logged into the console, but UI doesn't reflect this.
TODO: Print a text (instead of standard BucketPainter UI) into the side panel to inform the user, that bucket painter is not supported on a non-polyhedron mesh.
Hojdy
Tomas
Jindra
Luis
Make these tools act idependently from framerate when dragging.
Possible way to do so is to save distance to triangle boundary during each sample, and run a next sample only after the distance treshold has been crossed.
check and write documentation comments to unit tests like there are for FontRasterizer
Pepr crashes if you try to load a new model when segmentation is in progress (user is assigning the colors).
Probably because of the overriden color buffer.
Fix: call reset() on all tools before new geometry gets loaded? (And call onNewGeometry afterwards, as it is right now)
(following is written by Luis)
2.2.1 - Importing the model, můžeme tam zmínit ještě drag & drop jak má slicer
2.2.2 - triangle painter, vyměnil bych "triangle that faces toward him" za visible triangle
přijde mi to přesnější, jelikož triangly co nejsou vidět ale koukají k nám nás nezajímaj
potom ještě ohledně Command stacku
máme tam psáno že každý command si bude ukládat původní state, aby mohl dělat undo
přijde mi lepší ta implementace jak nás napadla kdysi na schůzce, že command má jen data pro redo, a původní stav bude uložen někde v Command Manager klidně každých x commandů
a undo bude probíhat načtením snapshotu a redo třeba 2-3 commandů
Written by @Arokip
Reviewed by Me
In many places throughout Chapters 3, 4 and probably further you often say "and this will be described later". Don't be afraid to put concrete forward references there (that's what Latex is for). Mind you, the document won't necessarily be read linearly!
Minor Architecture remark: data from the geometry backend should probably flow to wherever the rendering subsystem is, in this case the UI application?
The implementation details of the undo/redo stack are not very clear. How about defining some notation for the object before/after command and writing around that? Nothing extreme, just tidy up a bit.
Nice examples of the data flow in 4.4. Would be really cool to have some diagrams accompanying them, but i get that there might not be the time for that.
You often talk about colors (coloring triangles etc.) but in fact one should probably use something like segmentation classes instead - since the concrete material is not known at editing time. For visulization in the editor, there will be colors of course, but they should be disambiguated i believe.
defaultcube.stl
is not foundhotkeys.json
is not an error!pepr3d.log
, fatals to pepr3d.fatal.log
Dialog.cpp
CI_MIN_LOG_LEVEL
to 3 (LEVEL_WARNING
)pepr3d.fatal.log
file exists when Pepr3D is launched, backup the original pepr3d.log
into pepr3d.fatal.#.log
file and show dialog and remove the .fatal.log
file)Pepr3D window does not open when dragging a file over to it's icon on the Windows taskbar. Other software that supports drag&drop does this.
Computing SDF throws an exception on this bad model. Will fix.
Allow custom segment count for circle
Here are a few comments by Oskar that we should consider before the final release.
ModelView
.A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.