Open AVA3d opened 8 months ago
A lot of addons use the same approach, writing data to objects including boxcutter, so I don't see why that would be an issue
As I said, the main reason - the addon couldn't handle old files/presets/kitbash parts
could you please add the bc rig
Here it is:
https://github.com/eXzacT/RePrimitive/assets/84742853/03dd6d27-417b-4a4f-bb44-af58f82ce7ab
I have a couple of thoughts regarding functionality of RePrimitive. I'll try to formulate them tomorrow (now my head is no longer clear, falling asleep)
could you please add the bc rig
Here it is: RePrimitive_test3.0_2.mp4
It seems like they are not even using primitives for this, I guess there's no way for me to hook into that kind of object creation but I can't tell since I don't have the addon
I have a couple of thoughts regarding functionality of RePrimitive. I'll try to formulate them tomorrow (now my head is no longer clear, falling asleep)
Okay have a good night :)
I've fixed the presets and scale issues, however the boolean loss in the blend file you sent me doesn't work because the objects you've used as cutter are not parented to the object they're cutting, weren't they always parented before? Or did you just forget to add it as a parent this time, because the previous version shouldn't work if the cutters are not parented either
New day, new ideas
I've already thought about starting this conversation several times, but I stopped myself - who am I to give an advice to the creator of the add-on on how to develop his own add-on?! You may have your own plans and vision for the future of the RePrimitive, and your own motivation to develop certain aspects of the add-on.
But sometimes an outside perspective can be useful and allows you to look at things from a different angle.
So, let me tell you my opinion. Moreover, feedback from a user with modeling experience can be useful.
Let me start with the fact that the previous version of the addon was very solid! Finished, sharpened tool! It was possible to use both the default functionality and additional through the pie-menu system.
Regarding the pie-menu. It allows you to do 2 things: convert one form to another and a system of quick presets. Conversion is a unique feature that I have not seen in other addons. Allows you to quickly change shape where you simply wouldn’t have done it before. Not because it's impossible, it's just that it might took a longer time and wasn't worth the effort. The preset system is also very important. The easier and with fewer clicks you can perform an operation, the faster you will complete the work, you will be more productive and the less tired you will be by clicking on the keyboard. Imagine a user who is modeling 8-12 hours the whole day.
Thus, I would like to highlight what is important/needed for a user:
For me personally, the automatic shape detection function is way-way secondary. Let's say, maintaining the position of the center, scaling from the center, saving loops - these are much more priority things. You might probably be offended by me here, because... I said "blasphemous things" for you as a developer - this feature required a lot of your time and effort. But, from the point of view of a user who just uses the tool - auto detection is not bad, but not a major function of the addon. As I understand, this feature really constrains you - it makes maintaining the addon and developing new features much more difficult or even impossible. In the latest update, this was the reason for the introduction of a very negative feature - the addon does not work at all (and is not planned) with geometry created outside this version of the addon.....
From our conversation earlier:
As I said in another topic - you might delegate to a user to choose which object type to modify. This might be a huge time/headache saver for you in terms of coding I guess :)
If it was like that from the beginning people would accept it but right now it's a downgrade if they have to say which object it is
If you offer a downgrade, then yes, it may not be fair at first glance. But this is not such an important feature. And if you offer additional functionality, people will only be grateful! This will result in mutual win-win.
So what I suggest is:
I can also offer a few ideas for the future development:
These are my thoughts and feedback. I do hope it might provide you a couple of ideas :) But anyway, the final deсision is up to you! Don't listen to anyone and do as you think is the best! :D
New day, new ideas
I've already thought about starting this conversation several times, but I stopped myself - who am I to give an advice to the creator of the add-on on how to develop his own add-on?! You may have your own plans and vision for the future of the RePrimitive, and your own motivation to develop certain aspects of the add-on.
But sometimes an outside perspective can be useful and allows you to look at things from a different angle.
So, let me tell you my opinion. Moreover, feedback from a user with modeling experience can be useful.
Let me start with the fact that the previous version of the addon was very solid! Finished, sharpened tool! It was possible to use both the default functionality and additional through the pie-menu system.
Regarding the pie-menu. It allows you to do 2 things: convert one form to another and a system of quick presets. Conversion is a unique feature that I have not seen in other addons. Allows you to quickly change shape where you simply wouldn’t have done it before. Not because it's impossible, it's just that it might took a longer time and wasn't worth the effort. The preset system is also very important. The easier and with fewer clicks you can perform an operation, the faster you will complete the work, you will be more productive and the less tired you will be by clicking on the keyboard. Imagine a user who is modeling 8-12 hours the whole day.
Thus, I would like to highlight what is important/needed for a user:
1. changing number of vertices. How the script will do this - automatically determining the form, or the user himself will specify it - is secondary. The main point is that this should be done quickly. More on this below 2. convert one shape into another 3. get easy access to different settings/presets 4. being able to change diameter/height
For me personally, the automatic shape detection function is way-way secondary. Let's say, maintaining the position of the center, scaling from the center, saving loops - these are much more priority things. You might probably be offended by me here, because... I said "blasphemous things" for you as a developer - this feature required a lot of your time and effort. But, from the point of view of a user who just uses the tool - auto detection is not bad, but not a major function of the addon. As I understand, this feature really constrains you - it makes maintaining the addon and developing new features much more difficult or even impossible. In the latest update, this was the reason for the introduction of a very negative feature - the addon does not work at all (and is not planned) with geometry created outside this version of the addon.....
From our conversation earlier:
As I said in another topic - you might delegate to a user to choose which object type to modify. This might be a huge time/headache saver for you in terms of coding I guess :)
If it was like that from the beginning people would accept it but right now it's a downgrade if they have to say which object it is
If you offer a downgrade, then yes, it may not be fair at first glance. But this is not such an important feature. And if you offer additional functionality, people will only be grateful! This will result in mutual win-win.
So what I suggest is:
1. refuse of auto-detection feature - this will greatly simplify your tasks without affecting a user much 2. add the pie-menu (you can use mine as a prototype) 3. add shape conversion 4. add the system of presets
I can also offer a few ideas for the future development:
1. group use, for multiple objects at once (changing number of vertices of all 6 wheels/cutters/bolts etc.) 2. working with linked objects (Alt+D) 3. working in edit mode with some parts of the mesh inside the object. Brief algorithm: select a cylinder in edit mode -> cut selection into a new object ->run RePrimitive -> merge the new object with the old one
These are my thoughts and feedback. I do hope it might provide you a couple of ideas :) But anyway, the final deсision is up to you! Don't listen to anyone and do as you think is the best! :D
I don't use blender at all, I'm first and foremost a developer and a gamer, I was only learning it because I wanted to make everything myself for the game I was developing for a while, and I was annoyed that you lose all the data once you click away/ do something else, so I got sidetracked and made the addon. I was aware that it could help people save seconds each time, and it might not be much but it adds up, especially if that's your main job. Art is not my forte, so feedback from people with modeling experience is definitely valuable.
If the only way to create primitives was through the usual add primitive-> then this version would absolutely be fine, I think you're wrong about writing data to object is a bad thing, it's a couple megabytes of extra data, if that even. And if every addon was developed properly and the names for the properties don't clash then it should cause no issues. Some of the things you said weren't working I've fixed in the meantime, the only one that remains(and is a big problem which will probably end up being impossible to fix with current approach) is that objects made by boxcutter do not have their data written to them. They're most likely not using those standard blender add primitive operators. There's a small chance they are, but when you use an operator inside an operator I believe the handler isn't aware of the nested one. I have to look into it more and see if it's possible to continue with the new approach because maintaining the current codebase is a lot easier and in the end if both versions work but one is easier/better of course I'll go for that one.
If it ends up being impossible I can stick to both approaches, once to generate the data and every other call to that same object would continue to use known data, so it would be a bit slower for the first call as it was before but it would be faster for every other.
I have to think about the pie menu, spending a lot of time on a feature that is potentially only liked by one user could be a waste of time, wouldn't people be sure which object they want the first time they add it, they're just not sure about some of its data yet. But it might be the best solution if finding out which object something is can't be done. I don't know why going from 1 type of object to another doesn't give you an error, the addon wasn't made for that and I'm sure eventually you'll run into them,
Multiple objects at once sounds like a crash waiting to happen with the amount of calculations that need to be done, but I could be wrong, I don't understand what you mean by the other two ideas.
I'll push those latest changes that fixed 4.1 compatibility for everyone but will be working on a big refactor again so it might take a couple weeks for the next big release but if you encounter some small bugs I can fix them :)
I don't use blender at all, I'm first and foremost a developer and a gamer
That's the common thing among developers unfortunately😞 Often people don't use their own products much and don't fully understand the needs of the community. This may prevent them to see a full potential of their creations.
If the only way to create primitives was through the usual add primitive
There are multiple ways to create primitives besides standard add primitive - several tools, curves and other addons besides BC(~3-4). So I wouldn't count on it at all.
I think you're wrong about writing data to object is a bad thing, it's a couple megabytes of extra data, if that even
I didn't say a word about it in my last post :) Because of 2 reasons. First, I wanted to accentuate your attention on other aspects. And second, I can't argue about it because I don't have enough knowledge in programming. You know your field better than me ;) But I do know that the more complex some addon is the more problems it could get in the future with each new Blender version and it's constantly changing API. Plus potential instability and compatibility issues. As you said: "Also maybe there will be some clashes with other addons but I'm not sure"
I have to think about the pie menu, spending a lot of time on a feature that is potentially only liked by one user could be a waste of time,
Regarding one user. Please don't mislead that I propose it for myself. I've already created the fully working menu with presets (thanks to your addon!), and I don't need it for myself. But similar thing could be very useful for other people! As well for your addon and its spread.
wouldn't people be sure which object they want the first time they add it, they're just not sure about some of its data yet
I would call it design evaluation and experimentation. You may start with straight holes, switch to cone dents and end up with square cuts. I think I've posted enough demos in another topic :)
To be honest, I don't understand why you don't want to expand the functionality of RePrimitive... I'm not trying to convince you for my own benefit or something. As I said above I have all the functionality I need and I'm good with the current status of the addon. I could sit calmly without a word. But I'm grateful to you for it and would like to do some good in return :)
Ok, I'll try for the last time, and after that I'll shut up regarding these pie-menues :)) There is a comparison of these 2 methods, where I tried to add plusses and minuses I could think of for each approach:
I don't understand what you mean by the other two ideas.
https://github.com/eXzacT/RePrimitive/assets/84742853/0658c565-af93-4022-bdd4-72de98805fec
https://github.com/eXzacT/RePrimitive/assets/84742853/6eac6bc0-b4e2-4963-9fe0-b2dbcf275520
I'll push those latest changes that fixed 4.1 compatibility for everyone
It looks like there is an issue with radial arrays:
https://github.com/eXzacT/RePrimitive/assets/84742853/fa61c3b6-6697-417f-a9e1-f14176298e5b
The file in case you need it:
RePrimTest_04.zip
Is this the behavior you want with linked objects? Or do you want all of them to keep their rotations? I've fixed the issue with radial arrays(nothing to do with them, it's because of the rotation) and can send the latest version if you need that fix asap or you can get it in the next release. I can do the same thing with multiple objects at the same time even if they're not linked but I'm not sure what kind of behavior you'd expect from it, what if the selected objects are cone, cylinder and torus, would you want all of them to get transformed into the one that was selected last or do you expect to get 3 different popups for each object, I don't think that's possible
Is this the behavior you want with linked objects? Or do you want all of them to keep their rotations?
Keeling their rotation is essential, as well as scale.
can send the latest version if you need that fix asap
No hurry, thanks. I'll wait
I can do the same thing with multiple objects at the same time even if they're not linked
I think this could be handy! One pop-up and transformation into the same shape of all selections would be the best.
I don't think I can make it prettier with default blender behavior, I can't make it the same way you did with the pie addon
Is this the behavior you want with linked objects? Or do you want all of them to keep their rotations?
Keeling their rotation is essential, as well as scale.
can send the latest version if you need that fix asap
No hurry, thanks. I'll wait
I can do the same thing with multiple objects at the same time even if they're not linked
I think this could be handy! One pop-up and transformation into the same shape of all selections would be the best.
Do you mean the same thing I said, for example selecting a torus, cylinder and cone(cone was selected last) if you ran the operator all 3 would become cones
Wow, you've made it! Cool menu! People will love it! :)
selecting a torus, cylinder and cone(cone was selected last) if you ran the operator all 3 would become cones
Yes, the same thing. And besides selecting the last, it would be handy if it could work with the menu above also
Yeah I basically rewrote everything past 2 weeks :D
Yep it would work with the menu, but by default the last one would be highlighted. So if I understood you correctly, if you had A cone, then 2 more cones because they were linked from that one and then 2 more objects which aren't linked, you selected all of them with one of the cones being last, every selected object would keep its transforms but would become cones, now you would have 5 cones with 3 of them being linked and 2 being standalone? Does this cover everything for linked objects and working with multiple selection? I'm guessing with other non linked/selected objects you would want them to keep their modifiers etc same as usual, but what about linked objects? I've noticed if you link them at some point in time they are the exact same but then you can continue adding modifiers to one of them and it doesn't move to all of them, is that correct? So I couldn't just replace the one selected last and spawn linked objects from with all their transforms intact because maybe some of them had different modifiers?
Is there a default selection in the pie addon you have? It would be really handy as the one I made with Blender doesn't support it I think, my idea was if you just press and release the keybind for pie menu it would run the default option, and the default option would depend on the type of object it is, if you pressed it and held it then you could move the mouse around and pick which one you want(including the default one), but since default options aren't supported the best thing I can do is highlight the default one, the confusing part is if the user releases the button I think they'd expect the highlighted one would be picked but that's not the case, here I'll record a gif so you can see what I mean
My point is, I can definitely see it being annoying having to open the pie menu every time just to select the default one, the workaround would be having 2 different keybinds, 1 for auto(the previous behavior) and 1 for pie
Also the annoying part with the pie menus is the operator shows up where the mouse was when you picked an option, so in the gif the cone got completely covered by the operator
How do you insert a loop cut for a cone though
if you had A cone, then 2 more cones because they were linked from that one and then 2 more objects which aren't linked, you selected all of them with one of the cones being last, every selected object would keep its transforms but would become cones, now you would have 5 cones with 3 of them being linked and 2 being standalone? Does this cover everything for linked objects and working with multiple selection?
The thing is that with linked objects there is no need to select all the objects. You just need to select one of them, change it, and all the linked ones will be rebuilt. This is the core idea. I might be not 100% correct, but as I understand it: Blender get a mesh(Cube00) and link it to objects "Folder1"," Folder2" etc. And we can change this mesh "Cube00" to another, lets say "Sphere00":
https://github.com/eXzacT/RePrimitive/assets/84742853/a8188c99-b8c3-423e-b3af-ffff16d307d3
but what about linked objects? I've noticed if you link them at some point in time they are the exact same but then you can continue adding modifiers to one of them and it doesn't move to all of them, is that correct?
Yes, you're right. It links a mesh to objects. And this objects can have different modifiers.
In relation to RePrimitive. Ideally, we should select only one linked object, change/transform it. And after that all other linked objects should be rebuilt accordingly.
Regarding mixing selection of linked and standalone meshes. I don't think it would be a common case, but potentially it's possible. So yeah, apply last selected primitive, or a primitive from the menu.
Is there a default selection in the pie addon you have?
No, there isn't. All pie-menus in different software I know don't work this way. And, to be honest, I don't really like this idea because a pie-menu is about quick access and muscle memory. I would advice to follow default Blender behavior. Let's take the Shading menu(hotkey Z). If there is Click(Down+Up) event, then it opens and holds the menu - a user should either click to a menu-item or escape. If there is Press (Down+hold) event, then it will run a menu item under the cursor without additional LMB click.
How do you insert a loop cut for a cone though
I use 2 methods:
https://github.com/eXzacT/RePrimitive/assets/84742853/4b726d8e-9da8-4cd7-a3b9-3e4e415b2c1e
I agree with the standard pie menu behavior but the problem is you can't do fast operations with muscle memory because of different presets, if it was just the 6 options for each object without any vertices then you could quickly select all 6 directions
Okay then the only way to do it would be to run the calculations on each object, I'll see what I can do and how fast it performs
Going to be a bit trickier for cones then
you can't do fast operations with muscle memory because of different presets
You're right, but you can mitigate it by moving the presets outside the quick access area.
I would recommend to arrange the most important menu items vertically and horizontally.
As an example, in these two menus
I select 2-8, 6-4 items even without thinking, just subconsciously ("If there is Press (Down+hold) event, then it will run a menu item under the cursor without additional LMB click.") But if I need some other item I open-up the menu and search through it ("If there is Click(Down+Up) event, then it opens and holds the menu - a user should either click to a menu-item or escape")
Both these menus aren't from PME, the 1st one is from keKit addon, the 2nd one is from MACHIN3tools.
if it was just the 6 options for each object
By the way, there are 8 sections you can use. I've been trying several arrangements with the menu items, and the most comfortable for me is the menu I showed several posts above. So If it's possible I would recommend to place Cone and Cylinder at opposite sides vertically or horizontally, as well as Circle and Cube. Cube is 4-sided cylinder:
edited
There is a menu:
If it can help you to dig into the menu stuff I can attach a file with this menu. It's from MACHIN3tools addon, the addon is v1.4.1(old version for pre-Blender 4 builds) and free. I don't think there are any violations on this regard. The file: pies.zip There are couple of notes from my side like: "# Pie-menu order: 9-15-18-12-11-13-19-17". I tried to add Matcap item to the menu a year or so ago , with my near zero knowledge of Python.
An another variant:
With this variant you can utilize everything with one hotkey - both the menu and the main RePrimitive command. Or you can add Cube instead of RePrimitive. It's up to you :) Also, it would be good for usability to add some space as separator between the presets and the cylinder/cone/circles buttons by adding an empty row.
There is a menu:
If it can help you to dig into the menu stuff I can attach a file with this menu. It's from MACHIN3tools addon, the addon is v1.4.1(old version for pre-Blender 4 builds) and free. I don't think there are any violations on this regard. The file: pies.zip There are couple of notes from my side like: "# Pie-menu order: 9-15-18-12-11-13-19-17". I tried to add Matcap item to the menu a year or so ago , with my near zero knowledge of Python.
Interesting, I have to dig into the code, I think this could potentially work and instead of having presets shown in the menu immediately, I'd show them in the big menu like that one, also it wouldn't just be verts but it could be an entire preset, with radius, height, etc, what do you think about that one?
Oh nevermind the entire menu is always drawn, I thought it would be drawn on selection
I've posted this menu for you as an interesting and complex example of coding. Speaking of usability of this menu.... Well it is not great IMHO. For sure, having a lot of settings in front of you is handy, but it's hard to reach a particular one, especially over and over again. Such a huge menus isn't about muscle memory. That's why I had to manually modify it and add Matcap item(2) at the bottom even if there is the same item at the right top area.
An another variant:
With this variant you can utilize everything with one hotkey - both the menu and the main RePrimitive command. Or you can add Cube instead of RePrimitive. It's up to you :) Also, it would be good for usability to add some space as separator between the presets and the cylinder/cone/circles buttons by adding an empty row.
This would kinda solve it except the bottom one, you can still go over the menu accidentaly and use a preset instead, but yeah I think there's no way around it. It feels very limiting what you can do with the default blender pie menu
the empty row would help, you're right
Do you know if people would potentially make cuts like these? Because if cuts are one sided like this then origin to geometry doesn't quite work
Yep, it's quite possible. Lets say we need to mitigate shading issues, and we need to restrict the area around a cut. Regarding preserving origin. What do you think of read->store->recall the initial origin of an object?
No news for a long time. How are things going?
Sorry, I've been real busy with work since everyone else went for a vacation and I'm the only one left, so I didn't work on addon a lot. Currently I'm left with replacing multiple selected objects. Can you confirm the following, You select 3 objects, the last one you select would also have 2 linked objects which you don't have to select, then once you called the operator whatever options you choose would happen to all 5 objects, but they would all keep their locations, rotations, modifiers, parents, children, materials etc It's a lot of work and can potentially be really slow, especially if booleans are involved. I was thinking about doing all that work once you exit the operator or something, not every time you scroll through verts and other data. This way it would only happen once and not many times per second.
Yeah, "hot" season's coming with all vacations and holidays. With plusses and minuses it brings :))
Regarding selection - everything is correct. It's the best solution that can be. But I don't see anything bad if the addon could work separately either for single objects or linked. I hardly can imagine selection all of these objects and convert them at once.
Hey Damjan,
Today I've finally installed the latest Blender 4.1.1. There are some compatibility issues with BoxCutter. https://github.com/eXzacT/RePrimitive/assets/84742853/7100afea-e345-4c9c-88f8-d3de24c63a9c
And also get errors sometimes (50/50) if a mesh has a loop cut: https://github.com/eXzacT/RePrimitive/assets/84742853/53a49373-4fd6-4a06-a1f6-6184d35d7d89
Take a look please
Hi, I actually have similar issues even without Boxcutter. When I change the number of vertices I get a new object for each number... and every object produces an error, AttributeError: 'Mesh' object has no attribute 'use_auto_smooth'
. This problem occurs in my Blender 4.1.1 and Blender 4.2.3LTS
Hello, the gumroad version should work. The problem was Blender changed how autosmoothing works in newer versions. I think I forgot to make a change on github and blender. https://exzact7.gumroad.com/l/reprimitive You can just enter 0 and get it for free there aswell.
Hello, the gumroad version should work. The problem was Blender changed how autosmoothing works in newer versions. I think I forgot to make a change on github and blender. https://exzact7.gumroad.com/l/reprimitive You can just enter 0 and get it for free there aswell.
Hmmm, yeah the duplicating is fixed. But FixRotation for objects like cubes which worked up until 1.2.1 and did not in 2.0 and 2.0.1, now doesn't make it a default cube, but a cube rotated by 45° because it turns it into a cylinder set to 4 vertices and radius sqrt(2) which you can see when using "RePrimitive" on the object (what did not work at all on cubes earlier). It's a bit confusing :)
Rotating cube was never even planned, I only made the fix rotation because I needed to do it in case it was applied for objects. And since it was made for primitives which have some settings unlike cube which is always a cube, then the rotation wasn't written for it either. If it worked before it was purely accidental :D But try going into edit mode, select the top face and then run fix rotation?
Rotating cube was never even planned, I only made the fix rotation because I needed to do it in case it was applied for objects. And since it was made for primitives which have some settings unlike cube which is always a cube, then the rotation wasn't written for it either. If it worked before it was purely accidental :D But try going into edit mode, select the top face and then run fix rotation?
Doing it in Edit Mode gives the same result as in Object Mode...
Well, I understand what you're saying, a cube is always a cube, but with an applied rotation it is a similar hassle to revert it as it is for other objects, find faces where you know how they should be oriented etc.
And let's say with a somehow rotated cube manually scaled to some arbitrary other size than default, then scale and rotation applied afterwards... and now you want to change the edge length to exactly 3 m... not an easy if not impossible task for the average user. Something which your addon would be perfect for if it did with cubes what it does with cylinders. ;)
Hey Damjan,
Today I've finally installed the latest Blender 4.1.1. There are some compatibility issues with BoxCutter. https://github.com/eXzacT/RePrimitive/assets/84742853/7100afea-e345-4c9c-88f8-d3de24c63a9c
And also get errors sometimes (50/50) if a mesh has a loop cut: https://github.com/eXzacT/RePrimitive/assets/84742853/53a49373-4fd6-4a06-a1f6-6184d35d7d89
Take a look please