본문 바로가기

전체 글

(267)
Media Player에 대한 설명 [1-1] MediaPlayer 1. 사용 MediaPlayer player = new MediaPlayer(); player.setDataSource(); player.prepare(); player.start(); 2. 앱단과 엔진단의 쌍방향 호출형태 app -( 특정명령 )> MediaPlayer로 호출 Engine - (NuPlayer)의 처리결과(에러, prepare완료, 재생완료, 알람 등) -> App으로 전달 3. new MediaPlayer의 코드 looper 생성 ( 큐잉된 메세지들 처리 ) -> EventHandler생성 ( Async로 작동하는 API 에서 Engine->app으로 보내는 메세지들 큐잉) -> Message [1-2] MediaPlayer API 설명 1.데이터 셋팅..
Android + OpenGLES로 삼각형 그리기 오늘은 OpenGLES 로 삼각형을 그려보도록 하겠습니다. [결과물] [프로젝트 파일] [AndroidMenifest.xml] ... [MainActivity.java] 1. 뷰를 생성하고, 셋팅해준다. package com.samman.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.os.Bundle; import android.view.WindowManager; public class MainActivity extends Activity { private MainGLSurfaceView mGLSurfaceView; @Override protected void..
Android + OpenGLES로 사각형 그리기 [OpenGLES 의 도형그리기 기본] OpenGLES 는 다음과 같은 방법으로 점, 선, 도형을 그려나간다. [사각형 그리기] 보통 삼각형 두개를 합쳐서 그린다. 아래는 사각형을 그릴때 필요한 두개의 삼각형을 반시계 방향으로그려보고, 좌표를 생각해 본 것이다. [소스코드] 는 이전의 Trangle 소스코드에서 Triangle.java 의 다음 파란색 부분만 수정하면 된다. package com.samman.myapplication; import android.opengl.GLES20; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; public class Triangle { //삼사각형 정점 3개의 좌..
5강(1) - 랜더링 과정 중에서 View Transform ( World Space -> Camera Space 변환) GPU 에 의해서 Rendering 이 어떻게 수행되는지 자세하게 Detail 들을 배워나갈 것이다. 주전가와 같은 polygon mesh 가 drawcall 에 의해서 GPU 내부로 들어간다. Polygon Mesh 의 정점들은 vertex array 에 저장이 되어있을 것이다. [ Vertex shader ] Shader라는 프로그램을 짜줘야지만 GPU 에서 실행된다. Vertex array 에 저장된 정점들을 한번에 하나씩 불러들이면서 여러가지 연산을 수행한다. [ Resterizer ] 하드웨어에 셋팅된 정해진 기능만 수행한다. Index array 의 정보들을 이용해서 삼각형들을 다시 일단 조립을 한다. 이 삼각형은 픽셀들의 조합으로 되어있을텐데, 이 픽셀들의 정보를 ( 색상 ) Resteriz..
4강 (5) 역변환 (Inverse Transform) [Transform ( 변환 )의 역변환] - 역변환 ; 역행렬을 구하면 된다. [Translation ( 이동) 의 역변환] [Scaling(확대) 의 역변환] [Rotation 의 역변환] R회전행렬의 특징을 이용하면 R^T ( 전치행렬(transpose matrix ) 가 역행렬임을 알 수 있다. R(회전행렬) = | u, v, n | | u, v, n | | u, v, n | 3x3 이었죠. R의 전치행렬 = | u, u, u | | v, v, v | | n, n, n | 이 역행렬 임을 알 수 있다 . [ 그이유 ] (tip) u,v,n 의 특징 - object space 의 basis 벡터였죠 ㄴ orthonoraml 한 성질을 가지고 있엇죠 ㄴ u ,v, n 각각은 단위벡터 였다. ㄴ 자기끼..
4강(4) 3차원에서 World Transform ( Object Space -> World Space 변환 ) 이번시간에는 3D에서의 Transform 을 배워볼 것이다. [3차원 Scaling] [3차원 Rotation] 2차원 회전은 항상 '점'중심이었습니다. 3차원 회전 축을 중심으로 회전합니다. ex_1) z축 회전 x랑 y만 변한다. (z좌표는 rotation 후에도 유지된다.) R 구간을 변경하면 된다. ex_2) x축 회전 ex_3) y축 회전 ex_4) CCW vs CW rotation 반시계 방향 회전 Θ가 양수 시계방향 회전 은 Θ가 음수로 된다. [3차원 Translation] 2차원에서 처럼 사이즈1만큼 더큰 Idnetity행렬을 곱해준다. 4x4 Identity 행렬에 이동할 만큼의 변위벡터 Dx Dy Dz 만 집어 넣어주면 된다. [ 3차원 변호나을 4X4 곱셈으로 표현하기 ] ex_1)..
4강(2) - Transform 3x3행렬의 L구간, T구간 Linear Transform (선형변환) 에는 Scaling , Ratation 이 있다. Translation 은 Non Linear Transform 이다. 이 세개는 Affine Transform 이라고 부른다. 이는 저번시간에 배웠듯이 아무리 복잡한 Affine Transform 들의 구성이어도 3x3행렬과의 곱셈 으로 표현할 수 있다. [ Affine Transform 의 3x3행렬 의 작동방식을 연구해보자 ] 2가지 규칙을 얻을 수 있다. 규칙1] 어떤 조합을 하더라도 마지막 행은 항상 0 , 0 , 1 이 된다. 규칙2] [ L | T ] 구간으로 나눌 수 있다. - 규칙1에서 말한 행을 제외시키고서는, 구간을 리니어구간, non리니어 구간으로 나눌수 있다. [ L구간 | T구간 ] - [..
4강(1)- 변환(transform) - scaling, rotation, translation 오늘 수업 : 3가지의 중요한 변환을 배운다 이 변환들은 무조건 3X3 행렬을 이용한 곱셈으로 표현할 수 있다. Affine Transform ㄴ Linear Transform - Scaling - Rotation ㄴ Translation [Scaling] - 축소, 확대 ( x 방향 , y방향 scale ) ex_1) 정점의 Scaling - 행렬의 곱셈으로 표현할 수 있다. ex_2) 다각형의 Scaling - 다각형의 모든 Vetor에 스케일링 벡터를 곱해주면 그 다각형은 scaling 된다. [Rotation] - 회전 변환 ex_1) 정점의 Rotation - 회전각 Θ 만큼 반시계 방향으로 회전시키는 벡터는 아래와 같다. ex_2) 정점의 Rotation ( 시계방향 ) [Translation..