코드 타입 확인(정의로 이동)
kinect의 position값을 받아올려고 하였는데.
Vector3 type이 아니었다.
Position에 마우스 커서를 갔다대면 CameraSpacePoint라는 알 수 없는 변수형이 뜬다. ^^;;
어떤 타입으로 받아와야 될지 몰라서 선생님께 질문하였다...
이럴 경우 파고들어가고 싶은 코드에 블록처리를 하고 우클릭을 누르고
'정의로 이동(window-f12/ mac - command + D)' 을 선택하면, 코드 내에 내장된 코드들이 나온다.
CameraSpacePoint의 타입은 들어가보니, struct구조로
Vector값을 float형으로 X,Y,Z로 가져오고 있었다.
1
2
3
4
5 |
public struct CameraSpacePoint
{
public float X { get; set; }
public float Y { get; set; }
public float Z { get; set; } |
cs |
pos값을 가져오기 위해서 새로운 벡터를 만들고
CameraSpacePoint의 내부에 있는 X, Y, Z값을 가져왔다.
1
2
3 |
var pos = body.Joints[Trackedjoint].Position;
Vector3 movePos = new Vector3(pos.X, pos.Y, pos.Z); |
cs |
structure과 class의 차이
둘 다 변수와 함수의 집합이다.
차이는 저장 위치이다.
structure - 스택에 저장 ex) rayCast.hit
class - 힙에 저장
*스택 : 함수 호출시 생성, 호출 완료되면 사라짐.(임시할당)
지역변수 매개변수 저장되는 영역.
LIFO(last in first out) - 마지막에 입력된 자료를 가장 먼저 삭제함.
*힙 : 할당할 메모리의 크기를 런타임에 정함. (동적할당)
호출이 끝나도 사라지지 않음.(가비지 컬렉터로 지워야함.)
static, 전역변수가 저장되는 영역.
FIFO(first in first out) - 가장 먼저 들어간 데이터를 먼저 삭제함.
/-------------------------/ 메모리상에서 | | 높은 구역 | Stack | | | /-------------------------/ | | | Heap | | | /-------------------------/ | Uninitialized data | | ---------Data---------- | | Initialized data | /-------------------------/ | | | Text | | | 메모리상에서 /-------------------------/ 낮은 구역
[참고]
보간
tracking하는데 position에 multiplier를 적용해서 끊김현상이 심하게 일어나서 보간을 해주었다.
보간 코드는 아래와 같다.
1 |
transform.position = Vector3.Lerp(transform.position, movePos * multiplier, Time.deltaTime * 10.0f); |
cs |
multiplier는 이동해야될 목적지 코드에 곱해주면 된다.
이후에 곱하면 보간이 잘 작동하지 않더라...
'Project > Galapagos' 카테고리의 다른 글
*벡터의 내적(벡터 사이각 구하기) 외적(법선벡터) (0) | 2019.01.15 |
---|---|
unity에서 kinect input값 받아오기 (1) | 2019.01.15 |
mapping(데카르트 좌표 -> 구면 좌표) (0) | 2019.01.14 |
구면 좌표계 Day1(공식) (0) | 2019.01.11 |
마우스를 따라서 이동하는 개체 코드 (0) | 2019.01.11 |