I denne opplæringen lærer du hvordan du lager et autonomt dørsystem ved hjelp av Xpresso-systemet i Cinema 4D. Denne innledende opplæringen vil lære deg grunnleggende om Xpresso-systemet og anvendelsen av egne moduler, og dermed gjøre det mulig for deg å tilpasse den kunnskapen til en annen kreativ ide.
La oss begynne med å lage et gulv og et kule. Disse er svært grunnleggende former som du finner under menyene. Jeg foreslår at du bruker "gulvobjektet" i stedet for å lage et "flyobjekt", siden gulvobjektet gir deg en uendelig lang overflate.
Lag nå en skrå overflate. Tenk enkelt, bare opprett et nytt Box-objekt, og gjør det redigerbart (snarvei: C-tasten) og senk en av kantene for å få en rampe.
Tilordne nå "Rigid Body" -taggen til alle tre gjenstandene: Gulv, Kule og Ramp.
Siden gulvet og rampen virker som stasjonære gjenstander, må du slå av dynamikken. For å gjøre det, klikker du på "Rigid body" -taggen du tilordnet før, og endrer den nevnte innstillingen til "Av".
Opprett nå et "Null-objekt" og tilordne deretter en "Xpresso-tag" til den.
Før vi går inn i Xpresso, må vi lage dørene som vi skal kontrollere. Så opprett et nytt Box-objekt og form det som du ønsker. Nå ved å bruke et Symmetry-objekt, dupliser døren. Så når du flytter den ene siden av døren, la oss si til høyre. Den andre siden beveger seg til venstre.
Dobbeltklikk nå på Xpresso-taggen du tilordnet før. Du får se et Xpresso redigeringsvindu. I venstre kolonne er det to faner X-Manager og X-Pool Jump til X-Pool, under "systemoperatører" vil du se "Xpresso", det er det vi skal bruke gjennom hele opplæringen. Alle modulene er oppført under de aktuelle kategoriene.
I dette Xpresso-systemet vil ballen og dørene samhandle på en måte. Så vi må få dem inn i Xpresso-editoren. For å gjøre det, bare dra og slipp kuleobjektet, og for nå en av dørene (Men bare kubeobjektet, ikke hele døren med symmetriobjektet.)
Når ballobjektet kommer nærmere døren, vil døren sakte åpne. For å gjøre det må vi først beregne avstanden mellom disse to objektene. Vi bruker ganske enkelt "Distans" -modulen under "Beregn" -kategorien. Så bare finn den og dra og slipp den til arbeidsområdet.
Nå er det to innganger og en utgang på "Avstand" -modulen. Det vi må gjøre er å gi to innganger. Disse vil være posisjonen til kuleobjektet og døren. For å få den haug med informasjon fra både sfæren og døren, må vi lage en utgang på dem.
For å gjøre det klikker du bare på det røde hjørnet av kuleobjektet og aktiverer "global posisjon x". Hvordan bestemme hvilken koordinat du må bruke for den globale posisjonen (x, y eller z) avhenger av koordinatpivoten i søkeren. På venstre bunn er det en liten pivot som hjelper deg.
Så vi har de to utgangene fra objektene, nå må vi kanalisere den informasjonen til avstandsmodulen for beregning. Bare klikk på den røde prikken og dra mens du holder museknappen til du kommer over den blå inngangspunktet, det er ganske intuitivt.
Dørets bevegelse utløses i henhold til avstanden mellom sfæren og døren. Så må vi bestemme en viss avstand, og når ballen går over den avstanden, vil døren begynne å åpne. Jo nærmere ballen blir, desto lenger åpner døren. For å gjøre det må vi bruke "sammenligne" modulen som en utløser. Igjen har vi to innganger. I dette eksemplet kommer en av inngangene fra avstandsmåling og den andre inngangen vil bli forhåndsbestemt av oss.
Klikk nå på "Sammenlign" -modulen og hopp til fanen Nod i Egenskaper-menyen. Det er et alternativ kalt "Funksjon". Denne bestemmer regler for sammenligning. Siden vi vil at den skal utløses når avstanden brytes, må vi bruke " <= " or " < " .
Den første står for "Mindre eller lik" og den andre står for "Mindre". Velg en du ønsker, det gjør ikke stor forskjell. Og under "Parameter" -fanen er det "Input2" som vil bli forhåndsbestemt. Så vil dette være avstanden mellom sfæren og døren før "sammenligne" modulen utløses. Det avhenger av animasjonsscenen, jeg brukte "800"men du kan endre det når du vil, så bare tilordne noe rundt 800.
Få "Tilstand" -modulen fra kategorien "logikk". Denne har tre innganger; "Bytt" er for å utløse den modulen. Hvis du skriver det inn med "1"(som står for" sant "i logikken), vil det endres fra" Input1 "til" Input2 ". Så vi må koble utgangen fra" Sammenlign "-modulen til" Switch "-inngangen til" Condition "-modulen, slik at vi kan utløse denne modulen når den forutbestemte avstanden mellom sfæren og døren brytes. Fordi når denne avstanden blir brutt, vil "Sammenlign" -modulen utstede "1", som betyr "ekte".
Så langt så bra, nå må vi bestemme verdiene for "Input1" og "Input2" på "Condition" -modulen. Disse verdiene tilsvarer dørens posisjon på "Z-aksen" (her er det Z-aksen på min scene, men som jeg tidligere nevnte, avhenger det av hvordan du designet din scene, så du må sjekke veibeskrivelse før du bestemmer hvilken aksel du vil flytte døren din på) Så den første inngangen må være den første posisjonen til døren på Z-aksen. Her er det "124,935"for meg. (Også akselvridningen jeg har nevnt er synlig på skjermbildet, den grønne, blå og røde sving på venstre side.) Bruk denne verdien til først inngangen under parameterfanen.
Nå er det vanskelig å bestemme den andre inngangen som vil endres når ballen kommer nærmere døren. Så denne verdien må komme fra avstanden mellom ballen og døren. Men det vi trenger er en økende verdi. Da vi har en fallende verdi mellom ball og dør, må vi konvertere den.
Her modulen vi må bruke er "Inverter" -modulen. Denne modulen konverterer høye verdier til lave verdier. Så som det er input øker, reduseres produksjonen. Få det fra kategorien "Beregn" og koble deretter utgangen fra "Avstand" -modulen til inngang av "Inverter" -modulen.
Hvis du kobler en "resultat" -modul til utgangen av "Invert" -modulen, vil du se at verdien du får, er ekstremt lav. Så på en eller annen måte må du forstørre det. For å gjøre det, under kategorien "beregne" må du bruke modulen "FloatMath: Add".
Først ser det ut som tilleggsoperatøren, men du kan endre funksjonen og bruke den som en multiplikator. Slå den inn i en multiplikator og koble deretter utgangen til "Invert" til inngangen til "FloatMath" -modulen. Deretter angir du som en "Float value" en verdi rundt "50000". Du kan igjen tilpasse det til når du vil. Denne verdien er tallet du multipliserer inngangen du får fra" Invert "-modulen. Utgangen av" Invert "-modulen er for lav at multiplisering med stort nummer er nødvendig for å utnytte det.
Nå vil vi møte et annet problem at utgangen av "FloatMath" -modulen vil nå høye verdier i en slik grad at døren vil bevege seg for langt unna. Så vi må klemme utgangen og bestemme grensene. For å gjøre det, legg til "Clamp" -modulen, som er under kategorien "Beregn", og koble deretter utgangen fra "FloatMath" til "Value" -delen av "Clamp" -modulen.
Nå må vi avgjøre grensene som skal klemmes. Min. verdien må være den første "Z-aksen" posisjonen til døren. Det var "124.935" og Max. verdien er den endelige posisjonen til døren på Z-aksen (jeg brukte "300" for maks.)
Utgangen av "Clamp" -modulen vil være den andre inngangen til "Condition" -modulen, som er endringsverdien fra 124,935 til 300.
Nå på slutten har vi en verdiøkning fra 124.935 til 300 når ballen kommer nærmere 800cm til dørobjektet. Nå må vi bruke denne utdata som en inngang på dørens "globale posisjon.z" For å gjøre det, bare dra og slipp dørobjektet (igjen bare kubeobjektet i Symmetry-objektet, ikke hele døren) og denne gangen klikker du på det venstre blå hjørnet for å legge til "Global posisjon. Z". Og koble deretter utgangen av "Tilstand" til den nye inngangen til dørobjektet (som kalles "cube.1" på skjermbildet.)
Det endelige utseendet på arbeidsområdet er under. For å initialisere Xpresso-systemet må du starte Xpresso-beregningen. Som også vises på skjermbildet. Så langt har jeg forklart hvordan man styrer en av dørene. Så bare duplisere hele nodesystemet og bruk de nye dørene (kubusobjektene) til å kontrollere de andre to dørene.