Bug i maxScript? Sjekk for instances fungerer ikke

Max scripts

Moderatorer: Super Moderatorer, Admins


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Bug i maxScript? Sjekk for instances fungerer ikke

Legg innav hardrock_ram » lør 06 apr, 2013

Jeg må gjøre en sjekk i en scene etter objekter som er instances, men det ser ut til å være en feil i maxScript ... Den letteste måten å se det på er å følge eksempelet i hjelpefila. Søk på "refHierarchy" og følg eksempelet linje for linje. Når man spør om et objekt er instance så svarer den "false", selv om det skal være "true".

Er det noen workaround for dette? :)
if your not living on a killing ground, you better make your own

Brukeravatar

tassel
Innlegg: 3987
Registrert: man 26 sep, 2005
Sted: Oslo
Kontakt:

Legg innav tassel » lør 06 apr, 2013

Hvilken Max Versjon jobber du i ?

Det er ikke nye 2014 vel?

Kode: Velg alt

InstanceObjs = #()
for obj in geometry where (instanceMgr.getInstances obj &instances) > 1 and (findItem instanceObjs  obj) == 0 do
join instanceObjs instances
 
select InstanceObjs


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » lør 06 apr, 2013

Det vet jeg ikke. Det er bare å prøve. Søk på "refHierarchy" i hjelpefila og kopièr linje for linje fra eksempelet de har skrevet. på tredje linja hvor man skal få "true" tilbake første gang, så får man "false" isteden. Tar ti sekunder å prøve :)
if your not living on a killing ground, you better make your own

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » lør 06 apr, 2013

Returnerer false her også. Men om du velger box001 og assigner den på nytt til b1 -> b1 = $, så returnerer metoden true. Assigner du box002 til b2 på nytt på samme måte så returnerer den false. Så virker som det er ganske bugga ja.
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet
http://folk.ntnu.no/havardsc/site/wordpress/


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » tir 09 apr, 2013

Snåle greier ... Når selveste harvards konstaterer at det er en bug, så er det en bug! :P
if your not living on a killing ground, you better make your own

Brukeravatar

tassel
Innlegg: 3987
Registrert: man 26 sep, 2005
Sted: Oslo
Kontakt:

Legg innav tassel » tir 09 apr, 2013

Ja, vi kan vel konkludere med det :wink:

Du kan kanskje Spørre på cgsociety om noen har en workaround el.l. om du ikke har gjort det allerede?
http://forums.cgsociety.org/forumdisplay.php?f=6


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » ons 10 apr, 2013

Jeg tror jeg er på sporet av noe, men jeg har ikke mulighet til å se på det før i helga. Skriver det her hvis jeg finner ut av det :)
if your not living on a killing ground, you better make your own


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » lør 13 apr, 2013

Fant en fin løsning:

Kode: Velg alt

InstanceMgr.GetInstances $ &instances


Denne vil returnere antallet instances. hvilke objekter som er instances lagres i arrayet "instances", og kan leses ved å skrive "instances".

Det jeg ikke forstår er hva tegnet "&" betyr. Jeg ser at det lages et array på direkten, men vet ikke noe om det utover det. Noen som vet? :)
if your not living on a killing ground, you better make your own

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » fre 19 apr, 2013

Sjekk ut
By-reference

Kort fortalt så sender du inn en referanse av variabelen og ikke selve verdien av den. Da vil alle endringer du gjør på referansen i funksjonen bli gjeldene utenfor også.

I metoden du kaller så trenger du ikke å deklarere variabelen først, noe som er ganske neat. Hvis du skal skrive en egen funksjon i mxs som gjør det samme så må du huske å assigne den i selve metoden

Kode: Velg alt

fn foo &bar =
(
   bar = if bar == undefined then #() else bar
   append bar "foo"
   bar.count
)

test1 = foo &undeclaredArr -- tom variabel
   
declaredArr = #("dong")
test2 = foo &declaredArr -- definert variabel
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet

http://folk.ntnu.no/havardsc/site/wordpress/


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » lør 04 mai, 2013

Aha, takk for det :)
Jeg glemte denne litt bort, men skal sjekke det ut når jeg har mulighet.

Utrolig greit å ha en guru på slike ting på forumet :)
if your not living on a killing ground, you better make your own


Gå tilbake til «Max scripts»

Hvem er online

Brukere i dette forumet: Ingen registrerte brukere og 1 gjest

cron