Powiększanie kamery 6387 10

O temacie

Autor Nekron197

Zaczęty 8.07.2013 roku

Wyświetleń 6387

Odpowiedzi 10

Nekron197

Nekron197

Użytkownicy
posty192
Propsy13
  • Użytkownicy
Siemka. Mam pytanie dotyczace zoomu kamery w strone celownika. Zrobilbym to sam gdybym wiedzial na jakiej zasadzie to dziala. Sory za pisownię ale pisze z telefonu
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Powiększanie kamery
#1 2013-07-08, 23:42(Ostatnia zmiana: 2013-07-08, 23:45)
O ile pamiętam efekt analogiczny do zoomu pozwalało osiągnąć zmienianie pola fieldOfView. BTW, nie ma czegoś takiego jak "zoom w stronę". Może być co najwyżej zoom z obróceniem / przesunięciem, ale zoom sam w sobie to tylko zmiana skali. Jeśli celownik masz na środku ekranu, to nie musisz robić nic oprócz zmiany tego fova.

Sawik

Sawik

Użytkownicy
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Użytkownicy
  • Rebel
A ja bym zrobił zoom przesuwając kamerę, banalne rozwiązanie :F
 
Ż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

Sculler

Sculler

Użytkownicy
posty339
Propsy273
ProfesjaProducent
  • Użytkownicy
Siemka. Mam pytanie dotyczace zoomu kamery w strone celownika. Zrobilbym to sam gdybym wiedzial na jakiej zasadzie to dziala. Sory za pisownię ale pisze z telefonu

Łapaj skrypt ,który ułatwi Ci sprawę. Jak coś niejasne to pisz.

public class kamera : MonoBehaviour
{

public Transform cel; //obiekt za ,ktorym ma podazac kamera
public Transform obiekt; //kamera do ,ktorej bedzie przypisany ten skrypt
public float predkoscobrotu = 4.0f; //predkosc obrotu kamery


void Start ()
{
        //funkcja pomagajaca odnalezc cel za pomoca tagu, ktory jest do niego przypisany
GameObject pomoc = GameObject.FindGameObjectWithTag("enemy");
cel = pomoc.transform;
obiekt = transform;

}


void Update ()
{
//skrypt dzieki ,ktoremu kamera bedzie podazac za celem
  obiekt.rotation = Quaternion.Slerp(obiekt.rotation, Quaternion.LookRotation(cel.position - obiekt.position) ,predkoscobrotu*Time.deltaTime);
  if(cel.renderer.enabled == true) //przykladowy warunek
{
// jesli warunek jest spelniony to kamera przybliza na cel, 22 to przykladowa liczba odpowiadajaca za przyblizanie kamery
obiekt.camera.fieldOfView = 22;
                               
}
}
}
 
some things are meant to be

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Powiększanie kamery
#4 2013-07-09, 10:07(Ostatnia zmiana: 2013-07-09, 10:14)
A ja bym zrobił zoom przesuwając kamerę, banalne rozwiązanie :F
To tak nie działa, do tego perspektywa byłaby przesunięta. Zmiana fova to metoda nieintuicyjna, ale o ile kojarzę poprawna. Środek ekranu jest powiększany kosztem "rozsunięcia" brzegów poza jego krawędzie. Efekt dokładnie ten sam co w zoomie. Twoja metoda zmniejszyłaby odległość, ale przesunęła kamerę względem obiektów będących przy niej, pozwalając np patrzeć przez drzwi zoomując w nie. Zoom powinien tylko je powiększyć.

@nPC dla mnie niejasne jest jak ten skrypt ma mu ułatwić sprawę, jego działanie wygląda na wyjątkowo dziwne. Jak chciałeś mu pomóc gotowym kodem trzeba było napisać warunek dodający / odejmujący fov w zależności od tego czy przycisk jst wciśnięty ;p  Ty na dodatek tylko raz ustawiasz i nie przywracasz starego.

Sculler

Sculler

Użytkownicy
posty339
Propsy273
ProfesjaProducent
  • Użytkownicy

Sculler

Powiększanie kamery
#5 2013-07-09, 16:16(Ostatnia zmiana: 2013-07-09, 17:13)
To tak nie działa, do tego perspektywa byłaby przesunięta. Zmiana fova to metoda nieintuicyjna, ale o ile kojarzę poprawna. Środek ekranu jest powiększany kosztem "rozsunięcia" brzegów poza jego krawędzie. Efekt dokładnie ten sam co w zoomie. Twoja metoda zmniejszyłaby odległość, ale przesunęła kamerę względem obiektów będących przy niej, pozwalając np patrzeć przez drzwi zoomując w nie. Zoom powinien tylko je powiększyć.

@nPC dla mnie niejasne jest jak ten skrypt ma mu ułatwić sprawę, jego działanie wygląda na wyjątkowo dziwne. Jak chciałeś mu pomóc gotowym kodem trzeba było napisać warunek dodający / odejmujący fov w zależności od tego czy przycisk jst wciśnięty ;p  Ty na dodatek tylko raz ustawiasz i nie przywracasz starego.

"przykładowy warunek"
Skrypt jest dobry ale tylko wtedy gdy celownik tez jest gameobjectem i niekoniecznie jest wysrodkowany czyli do przyblizania obbiektu ktory sie rusza po ekranie np. do celownika w grze strategicznej.Biorac pod uwage ,ze celownik w grach FPS zawsze jest na srodku ekranu a fov zawsze zmniejsza sie do srodka/ zwieksza od srodka to ponizszy skrypt sie nada.

public class kamera : MonoBehaviour
{
       
private float zoom = 5;
private bool przyblizanie = false;
void Start ()
        {    
  transform.camera.fieldOfView = 22;
}
       
       
        void Update ()
        {      
if(Input.GetKeyDown("b") && przyblizanie == false)
                {
                   przyblizanie = true;
                   transform.camera.fieldOfView = transform.camera.fieldOfView * zoom * Time.deltaTime;    
                               
                }else if(Input.GetKeyDown("b") && przyblizanie == true)
          {
          transform.camera.fieldOfView = 22;
          przyblizanie = false;
          }
         
}
}
 
some things are meant to be

mgr Fartuess

mgr Fartuess

Użytkownicy
Kiedyś to były czasy!
posty1485
Propsy890
ProfesjaProgramista
  • Użytkownicy
  • Kiedyś to były czasy!
Jest tak jak mówi Av - tak dokładnie się robi.
 
Popisuje się ciągle menda jedna...

Sawik

Sawik

Użytkownicy
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Użytkownicy
  • Rebel
To tak nie działa, do tego perspektywa byłaby przesunięta. Zmiana fova to metoda nieintuicyjna, ale o ile kojarzę poprawna. Środek ekranu jest powiększany kosztem "rozsunięcia" brzegów poza jego krawędzie. Efekt dokładnie ten sam co w zoomie. Twoja metoda zmniejszyłaby odległość, ale przesunęła kamerę względem obiektów będących przy niej, pozwalając np patrzeć przez drzwi zoomując w nie. Zoom powinien tylko je powiększyć.
1. Wiesz, to zależy, nie napisał po co mu zoom, moje zastosowanie ma jak najbardziej miejsce bytu w paru okolicznościach.
2. Kolizje kamery to podstawa, wybacz jeśli oczekuję za dużo = |
3. Podawałem rozwiązanie banalne, nie ma co się silić na profesjonalizm gdy robimy coś dla siebie, hobbystycznie. W takiej sytuacji dąży się do efektu który nas zadowala, nie do standardów next genów.
 
Ż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

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
No to jakby ustawić kolizję, to z kolei nie można by wzoomować w drzwi czy ścianę, mimo że normalnie z zoomem to możliwe :D

No w każdym razie uwierz mi na słowo że przynajmniej w Unity metoda ze zmianą fov to jedna linijka, a to co ty piszesz nie dość że ma sporo wad, to jeszcze byłoby znacznie dłuższe, mimo że pozornie wydaje się prostsze ;p

eto

eto

Użytkownicy
-Banany pod pokładem? -SĄĄĄĄĄĄ
posty1741
Propsy1793
ProfesjaLvl designer
  • Użytkownicy
  • -Banany pod pokładem? -SĄĄĄĄĄĄ
przeczytalem temat. co wy macie za problemy...

http://s6.ifotos.pl/img/kamerajpg_nnxwean.jpg

:lol:  :lol:  :lol:
 
Niespełniony Level Designer z ambicjami, zmęczeniem i brakiem czasu...

mgr Fartuess

mgr Fartuess

Użytkownicy
Kiedyś to były czasy!
posty1485
Propsy890
ProfesjaProgramista
  • Użytkownicy
  • Kiedyś to były czasy!

mgr Fartuess

Powiększanie kamery
#10 2013-07-11, 21:39(Ostatnia zmiana: 2013-07-11, 21:43)
nikt tu nie ma problemów. sawik tylko ma za małe doświadczenie w kodzeniu tego typu rzeczy :) .

Poza tym to co podlinkowałeś, to zmiana tylniej płaszczyzny obcinania, a to zupełnie co innego :P
 
Popisuje się ciągle menda jedna...


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