본문 바로가기

Minecraft Forge/기타 메모5

partialTicks 에 관해 추측 지난 번에 partialTicks 가 현재 프레임이 현재 틱에서 얼마만 큼 떨어져 있는 지를 나타내주는 값이라고 했었는데, 궁금증이 좀 더 생겨서 partialTicks에 생각을 해 봤다. 기본적으로 partialTicks가 렌더링할 때 특정 프레임이 현재 틱에서 얼마나 떨어져 있는지에 대해 나타내는 값이라면 계산식은 아마 이렇게 될거라 생각하는데.... 맞는진 모르겠다. (내일이나 모레 확인해봐야 할 듯 하다) 실험해본 결과 아니었다. render partial Ticks 는 바닐라의 net.minecraft.util.Timer 클래스가 담당하고 있었는데, 상당히 관여되는 요소가 많다. 타이머가 업데이트 될때마다 이전 업데이트와의 시간차에 timeSyncAdjustment 라는 타이머 시계와 시스템 타.. 2016. 5. 20.
Vanilla Minecraft Vec3 에서 회전에 관해 진짜 그냥 자려고 했지만 소름돋아서 글을 쓰게된다... 바닐라 마인크래프트 Vec3 클래스에 해당 벡터를 주어진 각도 만큼 회전시켜주는 메소드가 있는데, (X, Y, Z 축을 중심으로) 이 메소드를 보고 처음에 의문이 들었다. (소스를 올리면 안되므로 계산식만 적겠다.) (회전하기 전의 좌표를 x, y, z 이라 하고 회전 후의 좌표를 x', y', z', 회전 각도를 Θ라 하면 (위와 같이 계산되게 되있다) 이 내용을 이해하려면 회전 변환에 대해 알고있어야 하는데, 회전 변환에 대한 자세한 증명은 다음번에 다룰 것이고 여기선 간단히 계산식만 쓰겠다. 기본적으로 +Z 축에 대하여 오일러 각에 대한 회전 (보통 흔히 쓰는 3가지 X, Y, Z 축에 대하여 일정한 각도를 각각 회전 시키는 것) 변환 행렬은 .. 2016. 5. 18.
Vanilla Minecraft Vec3 클래스에 관해 연속으로 글을 올리긴 처음인데.... 간단한 주제여서 이렇게 올린다. Vector 클래스 정리 중에 바닐라 마인크래프트에 있는 Vec3 클래스에서 의아한 점이 하나 있었다. 바로 subtract 메소드에 관한 것이었는데, 간단하게 보면 아래와 같다 (마인크래프트 소스 코드는 올리면 안된다고 하기에 간단히 구조만 정리해서 올리도록 하겠습니다.) (인수로 온 벡터) - this 메소드 위의 주석에는 명시된 벡터(인수) - this 를 리턴한다고 되어있는데, 이해가 안가는 부분은 기본적으로 메소드를 호출할때 (인스턴스명).(메소드명)((인수...)) 로 호출을 하는데 그렇다면 위 메소드도 마찬가지로 이렇게 호출을 하게 될 것이다. vec.subtract(vec2) 그런데 기본적으로 벡터 연산에서 a - b (.. 2016. 5. 18.
Vanilla Minecraft MathHelper 에 관해 편하게 쓸 수 있게 만들고 있는 라이브러리에 수학 관련 기능을 넣으려고 바닐라 소스를 참고하던 중에 MathHelper 클래스에서 의문점이 들었다. 다름이 아니라 MathHelper 클래스에서는 Sin 값을 테이블 형식으로 만들어 놓고 static 블럭을 이용해 처음에만 초기화하고 그 다음부터 그 테이블에서 찾아서 쓰는 방식을 이용했다. (마인크래프트 소스 코드를 올리는건 불법이라 하기에 단순히 원리만 적었다.) -> sin 메소드에선 인수로 오는 각도(라디안) * 10430.378 을 리턴한다. -> static 블럭에선 테이블을 초기화하는데 (인덱스) * 2 * (파이) / 65536 으로 초기화한다. 여기서 sin 과 cos 메소드 모두 60분법의 각이 아닌, Java Math 클래스와 같이 호도법.. 2016. 5. 18.