System.out.println("Hello, World");

'2012/04/20'에 해당되는 글 7건

  1. 2012.04.20 3D프로그래밍 - 정리
  2. 2012.04.20 3D프로그래밍 - 카메라
  3. 2012.04.20 회원가입 form 만들기
  4. 2012.04.20 로그인 form 만들기
  5. 2012.04.20 계산기 만들기
  6. 2012.04.20 HttpServletRequest
  7. 2012.04.20 HTML - Input 태그

GetMessage와 PeekMessage

- GetMessage는 메세지 큐에서 메세지 정보(msg)를 가져오는 작업을 한다. 

  여기서 약간 특이한 작업을 하는데, 메세지가 있으면 TRUE, 없으면 FALSE가 아닌 비활성화(대기상태)가 된다. 한마디로 메세지가 

  올때까지 대기한다. 대기상태가 되면 프로그램을 메모리를 최소화하며 <데드타임>에 들어가게 된다.

 

- PeekMessage는 GetMessage와 비슷한 일을 처리하지만 메시지가 있으면 True를, 없다면 FALSE를 반환하는게 큰 차이점이다.


프레임 스킵

 - PC사양이 딸려서 계속 화면에 그리기가 어렵다면 그리는 것을 포기하여 렉걸린것처럼 보이게 하는걸 의미한다.


다이렉트는 가상의 공간(백버퍼)에 그리고 프론트버퍼로 출력한다. 이것을 더블 버퍼링이라 하며 이유는 장치와 장치사이 연산속도가 제일 느리기 때문이다.


다이렉트 객체 생성 -> 디아비스 생성 -> 그릴준비 완료(back 버퍼) ->BeginScene이 그려야 한다. ->EndScene-> 화면 출력 - >백어퍼 삭제 ->Loop돔


UpdateData()와 Render()는 서로 분리시켜야 한다.

 - UpdateData는 좌표계산을 하며, Render는 그려주는 역할을 한다. 이 둘을 따로 분리하면 프레임속도가 높아지며 게임속도가 빨라진다. 



Posted by 김마농

○ 카메라

 - 3차원 게임에서 카메라는 시점을 의미한다. 3D게임의 화면에 보이는 모든 것은 카메라를 통해서 보여지는 것이다.

    3자의 입장에서 바라보면 캐릭터의 눈 위치에 카메라가 위치하여 캐릭터의 움직임에 따라 카메라의 방향과 위치가 변하는 것이다.


○ 변환 파이프 라인

 - 변환파이프라인의 목적은 하나의 이미지를 만들고 게이머의 화면에 그것들을 보여주기 위한 것이다.

    파이프 라인은 기하적인 데이터를 하나의 물체나 장면으로 표현하는 역할을 하며, 그것들로부터 2차원의 이미지를 만들어낸다.



○ 모델 공간(Model Space)

 - 일반적으로 하나의 캐릭터를 표현할 때 모델공간이라 불리는 하나의 좌표계에서 정점의 위치를 저장한다.

 - 로컬 좌표계를 이야기한다.


○ 전역공간(World Space)

 - 3차원 공간상의 최종적인 원점의 좌표계

 - 게이머의 화면에 보여질 모든 물체들을 위한 절대적인 레퍼런스 역항을 수행

 - 게임의 오브젝트들은 월드 공간의 좌표를 가지고 있다.


☆ 월드 변환(World Transform)

- 박스와 실린더가 각각 존재한다.

- 따로 따로 모델링된 실린더와 박스는 각각의 좌표계를 갖는다. 이것이 로컬 좌표계이다.

  이것들은 그냥 3차원 공간상에 배치하게 되면 원점을 공유한다.

- 2개의 물체를 따로따로 출력하기 위해서는 물체가 사용하는 로컬 좌표계가 아닌 월드 좌표계를 도입해야 한다.

- 즉 '실린더의 로컬좌표계 -> 월드 좌표계"와 "박스의 로컬 좌표계 -> 월드 좌표계"라는 2개의 변환이 필요하다.

- 일반적으로 3차원 그래픽에서 변환을 행렬을 사용한다고 해으니 로컬 좌표계->월드 좌표계는 행렬 변환이라는 것을 알 수 있다.

- 이런식으로 로컬 좌표계를 월드 좌표계로 변환하는 행렬을 변환 행렬(Transform Matrix)이라 한다. 


○ 시점공간(Eye Space)

 - 카메라가 바라보는 공간을 시점공간이라고 한다.

 - 시점이 그 공간 좌표계의 원점이 된다.


○ 절단 공간(Clip Space)

 - 어떤 물체가 보여지는 위치에 있는지, 그렇지 않은지를 판단.

 - 시야 절두체를 통해서 이루어진다.

 - 절단 공간상의 시야 절두체를 표현한 축정렬된 육면체의 크기는 동차 좌표계에서 표현된 4번째 좌표와 관련있다.

 - 카메라가 바라보는 정육면체 안에 잘라서 넣는다.


○ 정규화된 장치 좌표계(Normalized Device Coorinates)

 - 절단 공간에서 추 정렬된 육면체의 크기인 W를 1로 놓으면 정규화된 장치 좌표계를 얻을 수 있다.

 - 정규화된 장치 좌표계를 기준으로 표현된(x,y,z) 좌표에서 z값을 0으로 놓아서 좌표(x,y)를 얻는다.

 - 3D에서 2D로 변환하는 과정을 Z버퍼라고도 하며 스테실버퍼(그림자)에도 쓰인다.


○ 윈도우 좌표계

 - 정규화된 장치 좌표계를 실제 모니터상의 x,y 좌표계로 변환해야 하는데 이를 뷰포트 변환이라고 하며 정규화된 장치 

          좌표계에 게이머가 설정한 뷰포트의 크기를 곱하여 실제 윈도우의 x,y좌표를 얻어 낸다.


☆ 시야 절두체

 -시야 절두체란 하나의 3차원 공간상에서 카메라에 의해 보일 수 있는 것들을 담는 범위

 - 피라미드 형태의 육면체로 구성되어 있다.

☆ 투영

 - 투영은 3차원 장면을 2차원 모니터 화면에 그리기 위해, 장면에 표현되는 캐릭터나 물체들의 각 정점을 화면에 그려지는 

    2차원 좌표를 결정하기 위해 사용한다.

○ 원근 투영

 - 가까운 물체는 크게, 먼 물체는 작게 그려진다. 대부분의 게임에서 사용되는 방법





○ 직교 투영

 - 원금감을 갖지 않는 투영 방법으로 화면에 어떤 물체가 그려질때 원근에 의한 왜곡이 발생하지 않는 방법

 - 캐드 같은 설계 분야에 적용되며, 유명한 디아블로2가 직교 투영 방법을 사용한다.

          


☆ 일인칭 시점 카메라

 - 카메라의 위치는 위치벡터로 표현한다.

 - 시선 방향은 카메라가 바라보는 방향을 나타내는 방향벡터이며 

 - 상향 벡터는 카메라의 위쪽 벡터이다.

○ 카메라 변환(Camera Transform)

- 카메라 변환이란 3차원 월드 좌표계를 카메라를 기준으로 한 카메라 좌표계로 변환하는 것을 의미한다.

- 월드 좌표계를 카메라를 기준점으로 한 좌표계로 변환하는 과정이 카메라 변환이다. 


☆ 3인칭 시점 카메라

 - 3인칭 시점 카메라는 제 3자의 입장에서 내려다보는 시점을 제공한다.

 - 카메라는 게임 내의 캐릭터의 움직임과 무관하게 게이머의 명령에 따라 이동한다.





Posted by 김마농

○ 개요

 - ID, 패스워드, 이름 입력하는 텍스트창을 구현한다. 

 - 성별을 선택할 수 있게 라디오버튼을 구현한다.

 - 생일에서 년도는 텍스트로 입력받고, 월과 일은 select로 구현한다. 

 - 관심있는 항목은 checkbox로 받으면서 여러개 선택가능하니 배열로 받아서 구현한다.

 - 자기소개는 textarea로 구현한다.

 - 가입버튼과 초기화 버튼을 구현한다.


1. LoginServlet를 생성한다.


2. login.html를 구현한다.


3. RegisterServlet은 다음과 같이 코딩한다.

사용자 관심항목에서 여러개를 선택하고 넘겨야 하니까 배열로 받은후 넘겨야 한다.



4. register.html은 다음과 같이 코딩한다.


5. web.xml은 다음과 같이 코딩해준다.

6. 다음과 같이 화면에 출력되어야 정상적으로 된 것이다.


7. 다음과 같이 항목에다가 적당한 값을 입력하고 회원가입을 하면 화면에 출력되어야 한다.


8. 다음과 같이 회원가입할때 입력한 값들이 정상적으로 출력되면

완성한것이다.


Posted by 김마농

○ 개요

 - 로그인창과 패스워드창,가입하기 버튼과 초기화 버튼을 구현한다. 

 - 아직 DB를 연동안하기 떄문에 ID와 PASSWORD를 각각 'java'와 'servlet'로 정한후 이 아이디와 패스워드로만 접속하게 만든다.


1. 우선 LoginServlet을 만들어준다.


2. 그리고 login.html을 만들어준다.


3. LoginServlet을 다음과 같이 코딩해준다.


4. login.html을 다음과 같이 코딩한다.


5. web.xml도 다음과 같이 묶어준다.


6. 다음과 같이 로그인 form이 꾸며지고 아까 말한 java와 servlet으로 접속을 한다.


7. 다음은 아이디와 패스워드에 따라 변하는 화면이다.

-로그인 성공했을때


-로그인시 ID가 다를때


-로그인시 PASSWORD가 다를때





Posted by 김마농

○ 개요

 - 두개의 숫자를 연산하기 위해서 숫자가 들어가는 텍스트창을 2개 구현한다.

 - Radio버튼이나 Select를 이용하여 연산자(+,-, X, /)를 구현한다.

 - 계산버튼을 눌러서 계산이 되게 해야 한다.


1. 우선 Calculator 클래스 파일을 만들어준다.


2. 작업하기 쉽게 WebContent쪽에 form폴더를 만들어준후 calculator.html파일을 생성한다.



3. 우선 Calculator.java를 코딩한다.


4. 그리고 아까 form폴더에 만들어둔 calculator를 코딩한다.


5. 그다음 역시 Web.xml에 가서 연결한다.


6. 결과




Posted by 김마농

String value = getParameter(String name)


String[] values = getParameter(String name)


만약 name을 모를 경우 

Ennameration names = getParameterName()을 쓰면 된다.

Posted by 김마농

 &lt;, &gt;

 - 꺽쇠의 의미. 

&lt -> "<"

&gt -> ">"


○ type = "text"


value는 텍스트창에 기본값으로 넣는 용도로 쓰이며, size는 화면에 길이가 X인 텍스트창을 표시하며 maxlength는 최대 입력 길이 제한을 의미한다.



○ type = "password"

패스워드 입력을 할 수 있는 입력폼이 생성된다. 텍스틑 입력할때에는 안보이게 표시된다.


○ type = "checkbox"

위 그림과 같이 체크박스가 생긴다.


○ type = "checkbox" label 연결하기

하루동안 안보이기를 선택해도 체크박스에 체크가 된다. 


라벨 연결은 다음과 같이 연결해도 되지만 전자처럼하는 방법이 정석이니 참고만 한다.


○ type = "radio"


○ type = "radio" 그룹묶기

type="radio"에서 name을 모두 동일하게 하면 그룹으로 묶여진다. 위와 같은 결과 화면에서 no를 선택한 후 ok를 선택하면 되면 
no에 있던 버튼이 사라지고 ok에 표시된다. 

○ type = "file"

위와 같은 화면에서 찾아보기를 선택하면

위 화면과 같이 파일을 선택하는 화면이 출력된다.


파일을 선택하면 위와 같이 표시된다. 서버로 보낼때에는 경로가 보내지는게 아니라 파일이 전송된다.


○ type = "hidden"

화면에서는 아무것도 표시가 안된다. 


○ type = "button"

type="button"은 단독으로 쓰이지 않고 자바 스크립트랑 같이 연동해서 쓰인다. 뒤에 있는 onclick은 자바스크립트다.

value는 버튼에 쓰여질 문구로 쓰인다.



○ type = "reset"



위와 같이 체크박스와 버튼 등을 선택한 다음 [초기화버튼]을 누르게 되면


위와 같이 선택된것이 모두 초기화 된다. 


○ type = "button"

전송버튼을 누르게 되면 input에 입력된 모든 값들이 넘어가게 된다. 












Posted by 김마농