Topic: Boolean werkt niet zoals ik zou willen  (gelezen 305 keer)


Offline Léon

  • Member
  • *
  • Berichten: 16
    • Bekijk profiel
« Gepost op: 09 april 2018, 10:57:37 am »
Voor het volgende 'probleem' zou ik graag weer jullie hulp inroepen. Ik weet niet of het echt een probleem is, of omdat de boolean in Blender gewoon anders werkt dan in 3DS Max.

Wat ik wil is een virtueel zaagstukje creëren uit een deel van een botstuk (onderbeen). Een voorbeeld van wat ik wil is te zien in de afbeelding linksboven. Deze is gemaakt in 3DS Max mbv. booleans. Waarna achteraf nog steeds aanpassingen mogelijk zijn.
De werkwijze hiervoor was als volgt:
- Ik heb een blokje gemaakt voor het uitsnijden van het zaagstukje.
- Daarna een 2e, iets grotere blokje gemaakt voor het zaagverlies dat optreedt bij uitzagen met een zaagbladdikte 0,8mm.
  (zie beide blokjes weergegeven in afbeelding rechtboven).
- Als eerste het kleinste blokje geselecteerd en daarop een boolean-intersect met het botstuk uitgevoerd.
- Vervolgens het botstuk geselecteerd en daarop een boolean-difference met het grotere blokje.
Zoals gezegd zijn nu achteraf nog steeds aanpassingen mogelijk.

Als ik nu dezelfde werkwijze volg in Blender mbv. de boolean-modifier, dan is het eindresultaat dat ik uiteindelijk het zaagstukje kwijt ben (afbeelding rechtsonder), terwijl in 3DS Max beiden delen (zaagstukje èn botstuk) zichtbaar blijven en als aparte objecten verder zijn te bewerken (bijv. verplaatsen).
Wat er kennelijk in Blender gebeurt is dit; het zaagstukje refereert naar een deel van het botstuk, maar door de 2e boolean wordt deze referentie óók verwijderd. Er blijft dus een 'empty' over die overigens nog wel te verplaatsen is, dus er is daadwerkelijk een los stukje niets.
LET WEL: als ik na elke boolean op 'apply' klik, dan krijg ik wèl het gewenste resultaat, maar dan heb ik echter niet meer de mogelijk om achteraf nog iets te veranderen, zoals zaagdikte, locatie of grootte, iets wat ik in 3DS Max nog wèl kan.

Ik heb ook al getracht dit te bewerkstelligen met de BoolTool addon, maar tot nog toe geen resultaat.

Zien jullie een mogelijkheid, doe ik het verkeerd of is het in blender gewoon niet mogelijk?

Groet,
Léon



« Laatst bewerkt op: 09 april 2018, 14:28:47 pm door Léon »

Offline WesleyObrie

  • Member
  • *
  • Berichten: 114
  • Life's a bitch, deal with it!!
    • Bekijk profiel
« Reactie #1 Gepost op: 09 april 2018, 16:22:19 pm »
Hallo!!

Ik snap wat je bedoelt uit te leggen, maar ben hier niet zo in weg...
Wat je eens kan proberen, is het vakje "use modifier stack" aanvinken.
Deze heeft voor mij ook al eens dingen opgelost die ik anders ook niet zou hebben gevonden...
In ieder geval succes en hopelijk weet iemand hier meer van!!

Wesley

Online koos2

  • Member
  • *
  • Berichten: 1,680
    • Bekijk profiel
« Reactie #2 Gepost op: 10 april 2018, 08:47:01 am »
Helaas, ik heb ook nog eens extra gekeken, maar ik vrees dat dit beter gaat met 3DS Max.

@Wesley:Waar kun je "use modifier stack" aanvinken?

Online koos2

  • Member
  • *
  • Berichten: 1,680
    • Bekijk profiel
« Reactie #3 Gepost op: 10 april 2018, 09:29:33 am »
Heb net gelezen wat  JamieVanCadsand zegt over de boolean operator, dit bracht me op een idee.
Je zou het volgende kunnen doen. Je hebt je bot en het object dat gebruikt wordt voor de boolean.
Als je nu van beiden een gelinkte copy maakt en bij beiden niet de boolean toepast, dan kun je zowel het bot als het boolean object veranderen. Omdat ze gelinkt zijn, is de verandering aan de een ook een verandering aan de gelinkte kopie.

Zou kunnen werken. Maar misschien wel een verwarrende workflow.

Offline JamieVanCadsand

  • Member
  • *
  • Berichten: 127
  • Blender Project: Geen
    • Bekijk profiel
« Reactie #4 Gepost op: 10 april 2018, 11:12:43 am »
Heb net gelezen wat  JamieVanCadsand zegt over de boolean operator, dit bracht me op een idee.
Je zou het volgende kunnen doen. Je hebt je bot en het object dat gebruikt wordt voor de boolean.
Als je nu van beiden een gelinkte copy maakt en bij beiden niet de boolean toepast, dan kun je zowel het bot als het boolean object veranderen. Omdat ze gelinkt zijn, is de verandering aan de een ook een verandering aan de gelinkte kopie.

Zou kunnen werken. Maar misschien wel een verwarrende workflow.

Zoals Koos2 zegt...

Ik bedoel inderdaat dat je jezelf aanleert je modifiers altijd te laten staan, dus niet op 'apply' te
klikken. Dan kun je alle aanpassingen nog doen.

Ik denk wat koos2 inderdaad zegt, dat je een copy moet maken van de bot als je er nog niets
aan hebt gedaan, en dat je dan op de copy een diffrence bool (ik weet ook niet alles uit mijn
hoofd, maar ik denk een diffrence bool) of zo moet doen.... en dan met de zelfde uitsnij model
die je dan eerst denk ik moet copiëren voor de orginele stuk bot een gat maken (ook met de
boolean modifier) in de orginele bot (dus niet die copie)....

Ik zal de twee modellen (die uitsnij model voor de uitgezaagde stuk bot en die gecopiëerde
uitsnij model (niet te verwarren met de gecopieërde bot voor de uitgezaagde stukje) voor
de orginele stuk bot) wel parrenten (ik dacht Ctrl + P, in de object mode / keep parrant) met
je orginele bot en de uitgezaagde bot....)....

Maar ik raad je de boolean modifier (of tool) niet aan voor als je bijvoorbeeld een grid model
met gaten wilt creëren of bijvoorbeeld handvaten in een doos... gebruik dan de knife tool of
delete dan je faces en dan bijvoorbeeld "bridge edge loops" om een een gat te maken voor
andere soort modellen zoals een doos of een krat...

De boolean modifier (of tool) kan tot lelijke gevolgen leiden voor je 'topology'... dus kijkuit
voor wat je de boolean modifier (of tool) gebruikt.... ik ken het en heb er dus ook afentoe last
van....

Ik zal het alleen gebruiken om bijvoorbeeld voor arch projecten, een gat te maken voor een
deur of raam.... of een huis of gebouw inbrengen in een stuk grond of terrein....

En wat ik je al zeg.... ik zal modifiers zoizo laten staan (dus nooit op apply klikken), zodat
je er nog altijd (zoals jij wilt) wat aan kunt veranderen....

Succes, Jamie.
« Laatst bewerkt op: 10 april 2018, 11:24:10 am door JamieVanCadsand »
Ik ben PureBasic aan het leren voor mijn project...,
Ik heb namelijk een vrijwilliger die mij de taal leert
en ik ben 's avonds thuis en aventoe 's ochtends
op de glazenpui aan het oefenen met wat ik geleerd
heb - als door zelf dingen uit te zoeken!...

Offline Léon

  • Member
  • *
  • Berichten: 16
    • Bekijk profiel
« Reactie #5 Gepost op: 12 april 2018, 15:22:34 pm »
Heren,

Vooralsnog bedankt voor jullie reacties. Ik had zelf ook al het idee dat ik zou moeten gaan werken met kopieën. Tja, dan zal ik het er voorlopig maar mee moeten doen.

Maar nu een vervolg:
Ik heb een mesh (stl) geïmporteerd van een onderbeen waaruit een stukje bot gezaagd en verplaatst is (zie afbeelding linksboven). Rond deze verplaatsing wil ik nu een mal opbouwen, maar daartoe dien ik eerst het stukje zodanig te combineren dat de mal erop, maar ook weer eraf gehaald kan worden. Dit wil ik doen door eerst het zaagvlak te extruderen (afbeelding middenboven), opdat het door de mesh heen steekt (afbeelding rechtsboven). Daarna wilde ik beide stukken samenvoegen middels een boolean, om daarna alle polygonen ruim rond het verplaatste stukje te kunnen selecteren en daar dan vervolgens mbv. de solidify-modifier er een bepaalde dikte (3-5 mm) aan te geven die dienst doet als basismal.

Echter het probleem is nu dat de polygonen die na extrusie dóór de mesh heen steken bij selectie in de editmode in zijn geheel worden geselecteerd en niet worden doorsneden door het raakvlak met het botstuk. Dit leidt tot een verkeerde mal met ook volume aan de onderkant.

Mijn idee was vervolgens om dan maar het botstuk mbv. een boolean eerst af te trekken van het geëxtrudeerde stukje, om het dan daarna pas samen te voegen met het botstuk. Echter dit werkt met de geïmporteerde mesh niet! Het resultaat hiervan is te zien in de afbeelding linksonder (zie omcirkelde gedeelte).
Máár als ik nu ipv. het botstuk een rechthoek er vanaf trek, dan werkt het weer wèl (zie afbeelding midden en rechtsonder!

Is dit een mesh-gerelateerd probleem (kennelijk wel) en wie weet hier raad mee? Kan/moet ik de mesh misschien eerst op een of andere wijze converteren?



Offline Léon

  • Member
  • *
  • Berichten: 16
    • Bekijk profiel
« Reactie #6 Gepost op: 14 april 2018, 21:01:33 pm »
Ik ben erin geslaagd om een goede oplossing voor mijn probleem te vinden. Hiervoor heb ik echter wèl moeten zondigen tegen de diverse adviezen om boolean-modifier niet te 'applyen'.

Hier mijn oplossing:
- Ten eerste heb ik dus wèl alle booleans uitgevoerd.
- Het uiteindelijke resultaat, dus met 'foute', ongewenste polygonen aan de binnenkant van de mesh, heb ik vervolgens geëxporteerd naar een stl.
- Vervolgens heb ik de stl ingelezen in MeshMixer. Een analyse van de mesh door MeshMixer gaf aan dat er fouten zaten in de mesh, maar die heb ik echter uiteindelijk niet laten repareren, omdat er dan gaten vallen in de mesh op de plek waar de union is uitgevoerd.
- Met MeshMixer heb ik de mesh 'solid' gemaakt, met alle settings op hoge kwaliteit. Deze heb ik vervolgens weer als nieuwe mesh geëxporteerd.
- Als ik deze solid-stl nu vervolgens weer importeer in het al bestaande Blender-bestand, dan heb ik nu een tweede object op exact dezelfde plek als het origineel, maar dan nu zonder polygonen aan de binnenkant. Deze kan ik nu verder ´verdikken´ tot een mal mbv. de solidify-modifier.

Wel moet ik vermelden dat de nieuwe mesh iets gladder is dan het origineel, veroorzaakt door een remeshing die MeshMixer uitvoert tijdens de 'make solid' functie, en dat het grensvlak van de union iets onregelmatig is. Beiden zijn echter geen bezwaar voor mijn uiteindelijke doel.

Weer een schouderklopje voor mezelf! :)
« Laatst bewerkt op: 15 april 2018, 13:46:33 pm door Léon »

Online koos2

  • Member
  • *
  • Berichten: 1,680
    • Bekijk profiel
« Reactie #7 Gepost op: 15 april 2018, 10:27:50 am »
Fijn dat het gelukt is. En ook prettig dat je de oplossing hier vertelt. Nou weet ik weer van het bestaan van MeshMixer.
Misschien zou je voor de details je nieuwe mesh rond de oude kunnen zetten en dan een shrinkwrap modifier toepassen.
« Laatst bewerkt op: 15 april 2018, 10:29:29 am door koos2 »

Offline Léon

  • Member
  • *
  • Berichten: 16
    • Bekijk profiel
« Reactie #8 Gepost op: 15 april 2018, 13:53:01 pm »
@ Koos2
Ik was al van plan om het met shrinkwrap te gaan proberen, maar daar moet ik eerst nog wat verder op studeren.
In deze tutorial wordt daar ook al gebruik van gemaakt en zelfs de hulp ingeroepen van een speciaal geschreven script.