본문 바로가기

분류 전체보기

(401)
강체-RigidBody 기본속성 RigidBody 관련 정리 RigidBody : 강체 - 형태가 고정되어 외력이 가해져도 모양/크기가 변하지 않는 물체 1. 주요 레퍼런스(public attribute) 정의 * mass : 질량 - 힘과 함께 중요한 요소로 질량에 의해 강체의 운동 형태가 많이 달라진다. * drag : 선형 항력 계수??? - 움직임에 대한 댐퍼. 반발력으로 마찰이나 저항등의 용도로 쓰인다. 물체의 이동(포지션)에 영향을 주어, 나아가는 속도(velocity)가 감소하는 효과가 있다. * angularDrag : 회전 댐퍼. 스피어를 일반 큐브로 만들어진 바닥으로 던질때 이값을 0으로 하면, 한없이 굴러간다. 즉, 회전의 반대되는 힘. * useGravity : 중력적용. 기본중력방향은 Edit>Project Se..
[Unity3D] 오브젝트 회전 - Quaternion 쩝.. 예전.. DirectX 5.0 정도 즈음에 3D를 잠깐 볼 기회가 있었는데, 그때도 머리아프던 회전이 결국 여기서도 걸린다. 그때는 회전행렬을 만들어 사용했다. 얼핏 이해했다고 생각했는데, 벌써 근 10년전의 일이다보니 완전 까막눈이 다 되어있다..쩝 객관적 사실이 아닌 감성적 느낌과 다분히 초보적으로 그냥 인터넷에서 주워들은 대로 정리해본다. 덧붙여 수학...아... 한숨이... 1. 회전 일반 회전에는 오일러회전, 축회전, 쿼터니언회전등이 있는데, 많이 사용하는게 오일러회전과 쿼터니언이다. 일반적으로 오일러 회전은, 매번 회전시마다 오일러각이 변화하고, 해당 변화량에다 다시 x, y, z 순서(혹은 그반대)의 각 변환행렬을 곱하여 값을 얻게 되는데, 각각의 회전은 상호간에 독립적인 회전이 이루..
FBX 에니메이션 임포트 FBX 파일을 이용한 에니메이션 마야, 3DMax 등에서 작업한 오브젝트, 에니메이션 데이터를 unity3d에서 사용하기 위한 절차... 1. 마야에서 오브젝트와 각 에니메이션별로 export 한다. * export 하는 방법에 따라 차이가 있는데, 일단 unity3d의 샘플 프로젝트는 아래와 같은 이름 규칙을 사용. 오브젝트명.fbx 오브젝트명@에니메이션명1.fbx 오브젝트명@에니메이션명2.fbx 이와 같은 형태로 익스포트된 fbx를 사용하고 있다. * 하나의 fbx에 각 동작별로 프레임을 나눠 한번에 로드하고, 각 프레임별 에니메이션을 지정할 수 있다. 단 이럴경우 각 동작의 시작-끝 프레임번호를 알아야 한다. (unity3d에서 import 후 오브젝트의 prefab 객체에 Animations 컴포..
캐릭터 컨트롤 하기 캐릭터 컨트롤 unity3d 에서 Update() 시 키입력 처리를 통해 캐릭터를 이동할 수 있다. 각 키를 맵핑하고, 해당 이동 처리를 하고, 충돌 영역등을 설정해야 한다. 하늘에 떠있는 오브젝트는 키 입력에 따라 Translate를 해주면 되는데, 캐릭터의 경우 중력도 적용해야 하고, 이동 속도도 제어해야 한다. 이것저것 처리할게 많아지는데, unity3d 에서는 이와 관련한 컴포넌트를 제공하고 있다. 1. 캐릭터로 사용할 오브젝트(GameObject)를 하나 만든다. 큐브 오브젝트를 추가하고, 이름을 Player로 변경했다. 2. 라이트 추가 카메라 위치에 Directional light 오브젝트를 추가. 3. 스크립트 추가 Component > Physics > Character Controlle..
기본 클래스 정리 스크립트 주요 클래스 : 초기에 많이 사용되는 기본 클래스에 대해 정리. 상세한 내용은 Help > Scripting Reference 에서 찾아볼 수 있다. 속성은 소문자로 시작하고, 메쏘드는 대문자로 시작하는 룰을 따르고 있음. 스크립트의 속성을 public으로 설정하면, Inspector에서 드래그&드롭으로 그 값을 설정할 수 있다. Object unity3d 에서 씬에 사용되는 오브젝트,컴포턴트의 기본 클래스로 GameObject, Component 클래스는 이 클래스를 상속받아 구현되어 있다. name : 오브젝트명 Destroy() : 오브젝트 제거 GameObject unity3d의 씬(sence)에 사용되는 오브젝트는 GameObject 클래스의 파생 클래스이다. transform rigi..
Drag&drop listview 리스트뷰의 드래그&드롭은 android Music app의 TouchListView 소스를 살펴보면큰 줄기는 잡을 수 있다. 해당 소스로 적용했더니 무언가를 잘못했는지 원하는 처리가 이루어지지 않았다.drop 시의 포지션 정보가 영 이상해서.. 일단, 기존 소스는 두고, 몇가지 눈에 들어오지 않는 루틴과 변수명을 정리했다.대부분의 내용은 기존 소스와 동일. 특정 위치에 머무를 경우 자동 스크롤이 되도록 하기 위해 쓰레드를 사용할 예정인데,요건 일단 나중으로 미뤄둠~ 1. 리스트뷰를 상속받는 커스텀뷰를 만든다.public class MyListView extends ListView { private Context mContext; private ImageView mDragView; private Windo..
뷰 전환시 3차원 에니메이션 적용하기 뷰 3차원 회전 뷰 에니메이션에 대해서 기존에 포스팅 했는데, 이번엔 뷰 전환시 3차원으로회전하며 전환하는 에니메이션에 대해 정리차원으로 포스팅한다. 소스는 안드로이드 sdk의 샘플(API Demos) 중 Views > Animation > 3D Transition 에구현되어 있다.소스코드는 Rotate3dAnimation.java / Transition3d.java레이아웃은 animations_main_screen.xml 1. 에니메이션 클래스 구현기존 에니메이션 클래스는 2차원 이동과 회전을 지원하고 있는데, 이를 상속받아 3차원 회전 기능을 넣는다. 방식은 갤러리 구현시와 같이 Matrix , Camera를 사용한 회전으로 처리한다.Animation 클래스의 applyTransformation 메쏘..
클래스 동적 생성,호출 (리플렉션) 특정 클래스를 라이브러화 해서 사용하는데, 버전에 따른 api 가 다른 경우에이를 동적으로 로드해 사용할 수 있다. 소스단의 변경없이 라이브러리만 변경해 배포할 수 있으므로, 소스 관리가 좀더 수월 해진다.C라면 프리 프로세서를 사용하면 여러가지 처리를 할 수 있는데.. java는 이러한 처리를 Class 객체를 통해 가능케 한다.안드로이드에서 이를 이용하기 위해서는 1. 특정 클래스 동적으로 생성Class dyClass=null;Method dyMethod=null; // 클래스 검색dyClass = Class.forName("com.something.package.TestClass");if( dyClass == null ) {// 클래스 없음.return;} // 인자Class[] arg = new ..