Problem z czarem przemiany 4270 8

O temacie

Autor Bogdan Zwei

Zaczęty 27.06.2011 roku

Wyświetleń 4270

Odpowiedzi 8

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Witam.

Otóż mam problem z czarem przemiany w inne zwierzę, mam wpisane wszystko, co trzeba w Constants.d, Text.d, Spell_ProcessMana.d (czy jakoś tak) i w Spell_Transform_Alle.d. I problem tkwi w tym, że postać NIE zmienia się w dane zwierzę, tylko wykonuje całą animację, a w skryptach NIE ma błędów. Nie trzeba czasem jeszcze czegoś zrobić w Spacerze? Jak podmieniam nazwę zwierzęcia z innej runy, to wszystko działa, lecz nowa nie zmienia mnie w dane zwierzę, które wpisałem do "Npc_SetActiveSpellInfo".


Constants.d = 0 błędów.
Text.d = 0 błędów.
Spell_ProcessMana = 0 błędów.
Spell_Transform_Alle = 0 błędów.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Lord sklilen

Lord sklilen

Użytkownicy
posty64
Propsy8
  • Użytkownicy
w jakieś zwierzę w które wcześniej nie było przemiany czy w np: ścirwojada. Napisz jakieś konkrety, bo narazie to wiem, że ci czar nie działa, ale wszystko masz dobrze :ayfkm:   :facepalm:  Napisz np: z czego kopiowałeś pliki, spróbuj jakiś czar stary, który był dodany do gry. Kombinu kombinuj. A jak chcesz pomocy to powiedz więcej.
 

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Ja powiem byś przedstawił skrypt bo mogłeś napisać prawnie jeżeli chodzi o znaczki, typy itp ale możesz mieć problem innego typu.
Ja przy pisaniu skryptu nowego teleportu miałem problem z animacja mimo ze ją skopiowałem od innego teleportu (taki dla przykładu daje).
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Fakt, zapomniałem napisać zwierzę. ;p

Otóż z WoG'a ściągnąłem sobie żółwia, no i żółw sprawny w 100%, i mam tam napisane, żeby się zamieniał w żółwia, ale on tylko całą animację wykonuje.

@Sawik ja skrypty sprawdzałem przez godzinę - więc to się znaczy dużo razy - i WSZYSTKO było dobrze napisane, więc skrypty 100% sprawne, ale jak coś nie pasuje - w sensie nie wiecie, co może być powodem, to dam tu te skrypty do sprawdzenia.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Lord sklilen

Lord sklilen

Użytkownicy
posty64
Propsy8
  • Użytkownicy
No bo jak nam mówisz, że skrypty są dobrze, a ten żółw tęż jest na 100% dobrze, to czar powinien działać. Ale nie działa, więc pokaż skrypty, bo z wiadomości, jak już mówiłem, że wszystko jest dobrze, nic mi nie przychodzi do głowy co mogłeś zrobić źle (nie mówiąc już o jaimś żółwiu ktorego nigdy nie widziałem). :facepalm:    
Dodaj filmik na youtube jak ten błąd wygląda, no i pokaż skrypty. No kurde co ci szkodzi, przecież to tylko skrypty nie klucze do domu :ayfkm:
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Hehehe, dobra pokazuję:

Constants.d:
// ...
const int SPL_Reserved_90         = 90;
const int SPL_Reserved_91         = 91;
const int SPL_Reserved_92         = 92;
const int SPL_Reserved_93         = 93;
const int SPL_Reserved_94         = 94;
const int SPL_Reserved_95         = 95;
const int SPL_Reserved_96         = 96;
const int SPL_Reserved_97         = 97;
const int SPL_Reserved_98         = 98;
const int SPL_Reserved_99         = 99;
const int SPL_ElectroRain         = 100;
const int SPL_MeteorRain         = 101;
const int SPL_ElectroBall         = 102;
const int SPL_TrfTortle            = 103;

const int MAX_SPELL               = 104;   // 59 (Gothic), 68 (Gothic2), 100 (G2Addon)

jeszcze niżej:

   // ...
   "Light",            // 90   SPL_Reserved_90
   "Light",            // 91   SPL_Reserved_91
   "Light",            // 92   SPL_Reserved_92
   "Light",            // 93   SPL_Reserved_93
   "Light",            // 94   SPL_Reserved_94
   "Light",            // 95   SPL_Reserved_95
   "Light",            // 96   SPL_Reserved_96
   "Light",            // 97   SPL_Reserved_97
   "Light",            // 98   SPL_Reserved_98
   "Light",               // 99   SPL_Reserved_99
   "ElectroRain",               // 100   SPL_ElectroRain
   "MeteorRain",               // 101   SPL_MeteorRain
   "ElectroBall",               // 102   SPL_ElectroBall
   "Transform"           // 103   SPL_TrfTortle

jeszcze niżej:

   // ...
   "XXX",              // 90   SPL_Reserved_90
   "XXX",              // 91   SPL_Reserved_91
   "XXX",              // 92   SPL_Reserved_92
   "XXX",              // 93   SPL_Reserved_93
   "XXX",              // 94   SPL_Reserved_94
   "XXX",              // 95   SPL_Reserved_95
   "XXX",              // 96   SPL_Reserved_96
   "XXX",               // 97   SPL_Reserved_97
   "XXX",               // 98   SPL_Reserved_98
   "XXX",               // 99   SPL_Reserved_99
   "FEA",               // 100   SPL_ElectroRain
   "MSD",               // 101   SPL_MeteorRain
   "FIB",               // 102   SPL_ElectroBall
   "TRF"              // 103   SPL_TrfTortle

Text.d:

   // ...
   "TXT_SPL_RESERVED_90",      // 90   SPL_Reserved_90
   "TXT_SPL_RESERVED_91",      // 91   SPL_Reserved_91
   "TXT_SPL_RESERVED_92",      // 92   SPL_Reserved_92
   "TXT_SPL_RESERVED_93",      // 93   SPL_Reserved_93
   "TXT_SPL_RESERVED_94",      // 94   SPL_Reserved_94
   "TXT_SPL_RESERVED_95",      // 95   SPL_Reserved_95
   "TXT_SPL_RESERVED_96",      // 96   SPL_Reserved_96
   "TXT_SPL_RESERVED_97",      // 97   SPL_Reserved_97
   "TXT_SPL_RESERVED_98",      // 98   SPL_Reserved_98
   "TXT_SPL_RESERVED_99",      // 99   SPL_Reserved_99
   "Deszcz Piorunów",      // 100   SPL_Reserved_100
   "Deszcz Meteorów",      // 101   SPL_Reserved_101
   "Kula Piorunów",      // 102   SPL_Reserved_102
   "Zółw"            // 103   SPL_TrfTortle
jeszcze niżej:

// ...
const string NAME_SPL_Reserved_90         = "NAME_SPL_RESERVED_90";
const string NAME_SPL_Reserved_91         = "NAME_SPL_RESERVED_91";
const string NAME_SPL_Reserved_92         = "NAME_SPL_RESERVED_92";
const string NAME_SPL_Reserved_93         = "NAME_SPL_RESERVED_93";
const string NAME_SPL_Reserved_94         = "NAME_SPL_RESERVED_94";
const string NAME_SPL_Reserved_95         = "NAME_SPL_RESERVED_95";
const string NAME_SPL_Reserved_96         = "NAME_SPL_RESERVED_96";
const string NAME_SPL_Reserved_97         = "NAME_SPL_RESERVED_97";
const string NAME_SPL_Reserved_98         = "NAME_SPL_RESERVED_98";
const string NAME_SPL_Reserved_99         = "NAME_SPL_RESERVED_99";
const string NAME_SPL_ElectroRain         = "Deszcz Piorunów";
const string NAME_SPL_MeteorRain         = "Deszcz Meteorów";
const string NAME_SPL_ElectroBall         = "Kula Piorunów";
const string NAME_SPL_TrfTortle            = "Przemiana w żółwia";

Spell_ProcessMana.d:

   //beliar magic
   if (activeSpell == SPL_Swarm            )   {   return   Spell_Logic_Swarm         (manaInvested);   };
   if (activeSpell == SPL_Greententacle      )   {   return   Spell_Logic_Greententacle   (manaInvested);   };
   if (activeSpell == SPL_SummonGuardian      )   {   return   Spell_Logic_SummonGuardian   (manaInvested);   };
   if (activeSpell == SPL_Energyball         )   {   return   Spell_Logic_Energyball      (manaInvested);   };
   if (activeSpell == SPL_SuckEnergy         )   {   return   Spell_Logic_SuckEnergy      (manaInvested);   };
   if (activeSpell == SPL_Skull            )   {   return   Spell_Logic_Skull         (manaInvested);   };
   if (activeSpell == SPL_SummonZombie         )   {   return   Spell_Logic_SummonZombie   (manaInvested);   };
   if (activeSpell == SPL_SummonMud         )   {   return   Spell_Logic_SummonMud      (manaInvested);   };
   if (activeSpell == SPL_ElectroRAIN         )    {    return Spell_Logic_ElectroRAIN     (manaInvested); };
   if (activeSpell == SPL_MeteorRAIN         )    {    return Spell_Logic_MeteorRAIN     (manaInvested); };
   if (activeSpell == SPL_ElectroBall       )    {   return   Spell_Logic_ElectroBall   (manaInvested);   };
   if (activeSpell == SPL_TrfTortle             )   {   return   Spell_Logic_TrfTortle       (manaInvested);   };

Spell_Transform_Alle.d (całe):


// *********************
// Alle Transform Spells
// *********************

const int SPL_Cost_TrfSheep         = 10;
const int SPL_Cost_TrfScavenger      = 10;
const int SPL_Cost_TrfGiantRat      = 10;
const int SPL_Cost_TrfGiantBug      = 10;
const int SPL_Cost_TrfWolf         = 10;
const int SPL_Cost_TrfWaran         = 10;
const int SPL_Cost_TrfSnapper      = 10;
const int SPL_Cost_TrfWarg         = 10;
const int SPL_Cost_TrfFireWaran      = 10;
const int SPL_Cost_TrfLurker      = 10;
const int SPL_Cost_TrfShadowbeast   = 10;
const int SPL_Cost_TrfDragonSnapper   = 10;
const int SPL_Cost_TrfTortle      = 10;

// ------ Instanz für alle Transform-Sprüche ------
INSTANCE Spell_Transform (C_Spell_Proto)
{
   time_per_mana         = 0;
   spelltype             = SPELL_NEUTRAL;
   targetCollectAlgo      = TARGET_COLLECT_NONE;
   canTurnDuringInvest      = 0;
};

// ------ Schaf ------
func int Spell_Logic_TrfSheep (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfSheep)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfSheep;
      
      Npc_SetActiveSpellInfo(self, Sheep);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Scavenger ------
func int Spell_Logic_TrfScavenger (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfScavenger)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfScavenger;
      
      Npc_SetActiveSpellInfo(self, Scavenger);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Giant Rat ------
func int Spell_Logic_TrfGiantRat (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfGiantRat)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfGiantRat;
      
      Npc_SetActiveSpellInfo(self, Giant_Rat);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};


// ------ Giant BUG ------
func int Spell_Logic_TrfGiantBug (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfGiantBug)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfGiantBug;
      
      Npc_SetActiveSpellInfo(self, Giant_Bug);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Wolf ------
func int Spell_Logic_TrfWolf (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfWolf)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfWolf;
      
      Npc_SetActiveSpellInfo(self, Wolf);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Waran ------
func int Spell_Logic_TrfWaran (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfWaran)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfWaran;
      
      Npc_SetActiveSpellInfo(self, Waran);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Snapper ------
func int Spell_Logic_TrfSnapper (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfSnapper)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfSnapper;
      
      Npc_SetActiveSpellInfo(self, Snapper);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Warg ------
func int Spell_Logic_TrfWarg (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfWarg)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfWarg;
      
      Npc_SetActiveSpellInfo(self, Warg);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Feuerwaran ------
func int Spell_Logic_TrfFireWaran (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfFireWaran)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfFireWaran;
      
      Npc_SetActiveSpellInfo(self, FireWaran);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Lurker ------
func int Spell_Logic_TrfLurker (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfLurker)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfLurker;
      
      Npc_SetActiveSpellInfo(self, Lurker);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Shadowbeast ------
func int Spell_Logic_TrfShadowbeast (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfShadowbeast)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfShadowbeast;
      
      Npc_SetActiveSpellInfo(self, Shadowbeast);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Dragon Snapper ------
func int Spell_Logic_TrfDragonSnapper (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfDragonSnapper)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfDragonSnapper;
      
      Npc_SetActiveSpellInfo(self, DragonSnapper);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};

// ------ Tortle ------
func int Spell_Logic_TrfTortle (var int manaInvested)
{
   if ((Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll)))
   || (self.attribute[ATR_MANA] >= SPL_Cost_TrfTortle)
   {
      self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_TrfTortle;
      
      Npc_SetActiveSpellInfo(self, Tortle);
      return SPL_SENDCAST;
   }
   else
   {
      return SPL_SENDSTOP;
   };
};
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Vizier

Vizier

Użytkownicy
posty39
Propsy5
  • Użytkownicy
Z tego co pamiętam nie można dodawać czarów przemiany. W silniku jest zapisane które numery czarów to rzeczywiście czary przemiany. Ja w swoim modzie póki co usunąłem zwoje przemiany, a stworzyłem totem z monologiem w którym wpierw definiuje się za pomocą zmiennej instancje potwora. Sama zmienna znajduje się zamiast instancji w skrypcie czarów przemiany.
 

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Czyli to znaczy, że nowego czaru przemiany nie zrobię... Ech, dobra. Coś innego wymyślę. :)

Można zamknąć.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Znalazłem coś takiego autor mówi że sposób ten nie jest optymalny ale może się przyda.
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry