eXzacT / RePrimitive

Blender addon that allows you to tweak primitives whenever you want without creating them from scratch
MIT License
68 stars 4 forks source link

Boolean / Parenting / Vieport Display #4

Closed AVA3d closed 8 months ago

AVA3d commented 8 months ago

Hello, First of all I'd like to thank you for the cool addon! It works fine if you work with individual objects.

However it could shine the most in conjunction with boolean workflow. And regarding it I've noticed some issues:

  1. After using RePrimitive the boolean modifier loses initial object (probably because of renaming) ;
  2. If a Cylinder (cutter) is parented to a Cube then after using RePrimitive the cutter is no longer parented to the initial object. Plus there is some offset. It would be better if RePrimitive could preserve parenting;
  3. If we set a cutter as Wired (Viewport Display tab) then RePrimitive changes it to Solid. It isn't a problem if you work with 1-2 objects, but addons such as Boxccutter automatically set all the cutters as wires, and it could be multiple objects. Video: https://github.com/eXzacT/RePrimitive/assets/84742853/7c0c14d6-e4bf-4d3b-a302-c3441144c1c9

Other thoughts:

  1. The addon is register sensitive to the first letter. It would be better if RePrimitive could "eat" both "Cylinder" and "cylinder";
  2. You asked in the video on Youtube is it necessary to add support for loop cuts. It is DEFINITELY worth implement support for it because adding loop cuts is the common technique for fixing shading issues in boolean workflow.
eXzacT commented 8 months ago

This issue stems from the previous one, because I am creating new objects from old object data. I can definitely fix all 3 issues you mentioned and add the support for loop cuts , and will do so the next few days. Most likely tomorrow/the day after. I've just fixed the duplicate objects you mentioned in another issue but I'll release it together with other fixes.

When you talk about naming do you mean the mesh name on objects? I didn't think people would rename those so I just kept it on default, case sensitivity is fine but if people wanted to use random names there would be no way for me to know what kind of an object it is. All the calculations are dependant on first knowing what object it is.

Thank you so much for the feedback as I am not really using blender, it was more of a hobby, so I don't really know what people would want.

AVA3d commented 8 months ago

Hey! It's quite a great job for just a hobby! :)

I've recorded short (~1.5min) video for you with a simple demo of the boolean workflow with the BoxCutter addon(it's quite popular among people) and how RePrimitive can be incredibly useful with it: https://github.com/eXzacT/RePrimitive/assets/84742853/03dfdbfd-f954-4621-af72-14a4a041ab89

As you can see in the video, Boxcutter names all the cutters the same way: Cutter,Cutter.001,Cutter.002 etc. So we have to manually rename these meshes. If we aren't careful, we can type it from a small letter. That's why, as mentioned Solumnight in the comments on youtube, quick presets for renaming can be a good idea

eXzacT commented 8 months ago

Thank you :D

Oh they rename the mesh not just the object to Cutter, that's not a problem at all if I know exactly what words other addons use I can add them easily, you wouldn't have to rename the mesh manually, could you also check if they support other languages or is it always called Cutter? I need to know because I would need to add translations too, would be great if they name it cutter regardless of the language, then I can simply match it

AVA3d commented 8 months ago

BoxCutter always uses name "Cutter" for all objects and meshes regardless of a language. That's also true for different primitives what are created by BC: either boxes, cylinders or ngons. Hmm... I'm not sure that you even should bother with other languages support. It's a good and common practice to use English letters only in your files - this way you can send your work to anyone regardless of their native language.

eisenbruch commented 8 months ago

"Thank you so much for the feedback as I am not really using blender, it was more of a hobby, so I don't really know what people would want." Words of a god

On Wed, Mar 13, 2024 at 3:30 PM AVA3d @.***> wrote:

BoxCutter always uses name "Cutter" for all objects and meshes regardless of a language. That's also true for different primitives BC creates: either boxes, cylinders or ngons. Hmm... I'm not sure that you even should bother with other languages support. It's a good and common practice to use English letters only in your files - this way you can send your work to anyone regardless of their native language.

— Reply to this email directly, view it on GitHub https://github.com/eXzacT/RePrimitive/issues/4#issuecomment-1995498474, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABPE3RUC5NLR6KQS2SB5GJDYYCSLTAVCNFSM6AAAAABEUGDFJ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJVGQ4TQNBXGQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

eXzacT commented 8 months ago

It makes sense they are only using English because they're the one that are creating the cutter so the naming is in their hands, in my case I am checking mesh name of an added cylinder which uses translations, the addon wouldn't work for people using other languages. But yeah it's very simple for me to add an extra check for a name that starts with "Cutter"

eXzacT commented 8 months ago

hahahaha eisen :D

eXzacT commented 8 months ago

Actually there's a big problem here, if the object mesh name is Cutter, I can't know what kind of shape it is

eisenbruch commented 8 months ago

Actually there's a big problem here, if the object mesh name is Cutter, I can't know what kind of shape it is

I was thinking that but didn't want to say anything.... :/ It would obvs be much more complicated than checking name, but maybe you can check the number of faces and orientation of the normals to determine what the shape is? seems like a nightmare to me lol

eXzacT commented 8 months ago

I think it's only possible if the rotation wasn't applied, if it is I'm pretty sure there's no way for me to find out which object it is since I first have to fix the rotation for the rest of the calculations to work and to fix the rotation I have to know which object it is so you go in circles

AVA3d commented 8 months ago

Thank you so much! The most crucial issues are solved: -redundant meshes -with booleans -Wired/Solid

Couple of things I've noted: -removing an editable object from a current collection; or in case of BoxCuter - from the Cutters collection -sometimes there are errors with meshes with loop cuts; with object rotation

If it's possible, could you please implement also these? ⦁ preserving initial origin ⦁ preserving Flat/Smooth state 2024-03-16_1

eXzacT commented 8 months ago

I didn't implement loop cut support yet. Okay I'll move the objects back to the collection they were in after editing. Can you record a video of objects losing their initial origin? I thought I fixed that, but I only tested it with origin set to cursor. I think it might be tricky to restore an origin that isn't on cursor or elsewhere

AVA3d commented 8 months ago

Hah! I thought it is already there - it works well in some cases :))

Sure, here's the video regarding origins: https://github.com/eXzacT/RePrimitive/assets/84742853/f0053158-ef0d-4750-9151-dd563c21b464

eXzacT commented 8 months ago

Pure luck if it works ahahhahah :D Thanks, I get what you mean now, it will be a little tricky but it's doable