본문 바로가기

분류 전체보기

(17)
[Unity Shader] 1. 유니티 셰이더 소개 Shader : 셰이더 혹은 셰이더 프로그램은 GPU에서 동작하는 프로그램. Unity의 Shader Type Shader 그래픽스 파이프라인에서 가장 일반적으로 사용되는 셰이더 화면에 표현되는 픽셀의 색상을 정함 유니티에서 Shader Object를 사용하여 작동 Compute Shader 그래픽스 파이프라인외에서 GPU로 연산을 수행 Ray Tracing Shader Ray Tracing 관련 연산을 수행 Unity Shader 용어 정리 Shader 및 Shader program : GPU에서 실행되는 프로그램. 일반적으로 그래픽 파이프라인의 일부인 Shader를 의미. Shader Object : Shader Class의 인스턴스. 한개의 Shader Object는 Shader progam과 다른..
모던 객체 설계 기법 객체지향 설계 패턴을 제작할때 주의해야할 항목들이 있다. 이 항목들을 항상 유의 하면 설계를 해야 좋은 객체지향 설계 패턴을 제작할 수 있다. 줄여서 "SOLID기법" 이라고 한다. Single Responsibility Principle (단일 책임 원칙) 하나의 객체는 하나의 의무만 가지도록 설계한다. Open_Closed Principle (개방 폐쇄 원칙) 기존에 구현된 코드를 변경하지 않으면서 새로운 기능을 추가할 수 있도록 설계한다. Liskov Substitution Principle (리스코프 치환 원칙) 자식 객체를 부모 객체로 변경해도 작동에 문제 없을 정도로 상속을 단순히 사용한다. Interface Segregation Design (인터페이스 분리원칙) 객체가 구현해야 할 기능이 ..
3인칭 카메라 구현 Unity에서 3인칭 카메라를 구현해보자. 우선 3인칭 카메라의 생김새 부터 생각해보자. 일반적인 3인칭 카메라는 3D RPG게임에서 흔하게 찾아볼 수 있다. 이를 구현하기 위해 필요한 요소들을 정리해보자. - 카메라가 회전할 중심점 - 카메라가 중심점으로 부터 떨어져있는 거리(변동 가능해야함.) - 카메라가 중심점에서 구체 회전함. - 카메라부터 정해진 거리 사이에 장애물이 있을경우 카메라가 앞으로 당겨져와야함. 대충 이렇게가 앞에서 만들었던 일인칭 카메라와 다르게 고민해봐야할 요소들이다. 여기서는 바로 중심점이 중요하다. 상대좌표계를 이용하면 이를 간단하게 구현 할 수있다. 대략적인 구상도는 이렇다. CameraArm이라는 오브젝트에 카메라를 자식 오브젝트로 배치한 뒤 CameraArm의 뒤로 Arm..
1인칭 카메라 구현 Unity에서 1인칭 카메라를 구현해보자. 조작 방식은 다음과 같다. 이동 : W(앞), A(왼), S(뒤), D(오), Q(아래), E(위) 회전 : 마우스 우측버튼 클릭후 드래그 확대/축소 : 마우스 휠 부스트 : 왼쪽 Shift 초기화 : 스페이스바 일인칭 카메라의 조작을 담당할 클래스(FPSCameraController)를 생성한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class FPSCameraController : MonoBehaviour { public float SpeedMove; //카메라 이동 속도 public float SpeedRotate; //카메라 회전 속도 pu..
클래스 Form1은(는) 디자인 가능하지만 파일의 첫 번째 클래스가 아닙니다. Visual Studio에서 디자이너는 파일의 첫 번째 클래스를 사용해야 합니다. 파일에서 첫 번째 클래스가 되도록 해당 클래.. 위 사진은 윈폼 개발중 발생한 에러이다.(이놈때문에 하루 날려먹음 -.,-) -클래스 Form1은(는) 디자인 가능하지만 파일의 첫 번째 클래스가 아닙니다. Visual Studio에서 디자이너는 파일의 첫 번째 클래스를 사용해야 합니다. 파일에서 첫 번째 클래스가 되도록 해당 클래스 코드를 이동한 다음 디자이너를 다시 로드하십시오. 나는 이 오류를 처음에 뭐지? 하고 디자인 창을 닫았다가 문제가 발생한 케이스이다. 해당 오류 발생후 디자인을 닫는 순간... 갑자기 어떠한 방법으로도 Form1.cs의 디자인 창을 열 수가 없게된다!! 그래서 해당 오류의 원인을 확인하고 싶어도 방법이 없는것... 일단 그래서 디자인창 부터 살려보기위해 구글링을 해본 결과 방법은 있었다. 프로젝트 파일을 텍스트 편집기로 연..
Swap 끄적끄적 일단 가볍게 조깅하면서 떠오른 영감으로 게임 기획을 해보겠다. 핵심 요소 : 로그라이크, 1팀 3 캐릭터, 액션과 슈팅, 캐릭터들과 유물과 스킬의 조합 일단 기본적인 아이디어는 이렇다. 플레이어는 처음에 3캐릭 1팀으로 던전을 탐험할 팀을 꾸릴 수 있다. 각 캐릭터는 메인스킬과 서브스킬, 패시브효과를 지니고 있다. 플레이어는 3개의 캐릭터중 메인 캐릭터 하나를 조종하게 되며, 나머지 2 캐릭터는 메인 캐릭터를 따라다니며 각자의 방식으로 보조한다. 이때 메인캐릭터는 메인스킬을 사용 가능하다. 나머지 두 캐릭터는 서브스킬로 보조하고, 패시브 효과의 절반의 효과를 지원해준다. 메인 캐릭터는 스왑함으로써 주기적으로 바꿀 수 있다. 단 스왑시 기본 쿨타임이 돈다. 플레이어는 시작 시 랜덤 한 전용유물을 가지고 시..
RTSP 웹 스트리밍 개발 - 1 - 1. VMS(Video Management System)으로 부터 CCTV들의 RTSP를 받아 웹 브라우저에서 출력해야하는 임무를 받게 되었다.(왜 협력해주는 vms에서 rtsp만 지원해주는지는 몰?루) 2. 여러 시도와 폭풍 구글링 끝에 웹브라우저에서는 RTSP URL을 직접적으로 출력할 수 없음을 알게됨...(참고 : https://dvnest.com/user_20210809/) 3. 구글링 해보니 그래도 여러가지 방법이 있었음. (ffmpeg... websocket... webrtc... 등등) 4. 하지만 본인은 한낱 1년도 안된 신입에 c++과 unity(c#) 개발자인데.. 온통 자료들이 javascript 와 golang임.... 뭔가 매우 귀차는 일을 맡게된것 같음... 5. 그래도 일단 ..
위치에 따른 "const"의 의미들 C++코딩중 "const"라는 단어 참 많이 보게된다. 간단하게 설명 하자면 const가 걸린 위치의 값이 변동 되지 않도록 상수화 시키는 명령어 라고 보면 될것이다. 그런데 이 const라는 명령어가 참 다양한 위치에 붙을 수 있고, 그위치마다 하는 짓이 약간씩 다 다르다는게 문제다. 그래서 이걸 좀 정리 해보고자 한다. 변수에서는 [const] [dataType] [const] [Pointer] [const] [VariableName] [const] [자료형] [const] [포인터] [const] [변수명] 멤버 함수에서는 [const] [dataType] [const] [Pointer] [const][Function([const]Parameters)] [const] {Function Codes} ..