나는 webgl 자바 스크립트 엔진을 거의 보지 못했습니다. 용어는 각각 다릅니다.
"개체"와 "게임 개체"를 구별합니까?
일반적으로 대상은 시력 및/또는 터치로 인식 할 수있는 대상입니다. 엔티티는 여섯 번째 감각으로 만 인식되거나 전혀 인식되지 않을 수 있지만 (장면에서 두 개의 카메라가 서로를 인식 함). 각 객체는 엔티티이지만 각 엔티티가 객체로 표시되는 것은 아닙니다.
프로그래밍시 카메라, 조명, 모델, 장면 모두 위치, 회전 및 크기 조절이 필요합니다. 또한 많은 것들이 종속되어 있으므로 여기 또 다른 중요한 단어가 나온다 : 노드.
OOP 계층 구조 노드가 첫 번째 노드입니다. 그것은 정확히 하나의 부모를 가지지 만 첫 번째 노드는없는 노드와 0 이상의 자식을 제외합니다. 엔터티가 노드를 확장합니다. 그것은 위치, 회전, 스케일 + 부모, 자식을가집니다. 각 변형은 모든 어린이에게 영향을 미칩니다. 개체가 엔터티를 확장합니다. 객체에는 메쉬 세트와 같은 추가 속성이있을 수 있습니다 (각 객체는 하나 이상의 메쉬로 구성되며 각 메쉬에는 재료가 있음).
팁 :
은 때로는 OOP 계층 구조에서 3 개의 개체가 쓸모있다. 대부분의 엔진은 단일 개체 또는 두 개로 병합하고 다른 구성 요소는 생성자에서 속성을 제외 할 수 있습니다. 예를 들어 지구의 빛은 위치, 회전 또는 규모를 필요로하지 않습니다. 방향 표시등은 위치와 크기가 필요하지 않지만 회전이 필요합니다. 하지만 OOP 계층 구조를 확장하는 것은 두 가지 요소만으로는 가치가 없습니다.
playcanvas에서 이름은 엔터티입니다. 3j에서 이름은 Object3D입니다. 이름은 cocos2d (2d 엔진) 에서처럼 GraphNode 또는 Node 일 수도 있습니다.
나는 문학을 가지고 있지 않지만이 점에 대해 Thomas는 동의한다 : Object, Node와 같은 단어는 피하도록 노력한다. 혼란하기 때문이다. 나는 이것을 함께 병합하는 가장 좋은 이름이 엔티티 (Entity)라고 생각하지만, 다소 차이가있는 것 또는 단어 자체의 설명과 아무런 관련이 없다. 가장 중요한 것은 당신과 다른 사람들이 뭘 혼란스럽게 생각하는지입니다.
나는 저자의 개인적인 취향을 나타내지 않는이 분야의 문헌이 있다고 생각하지 않는다.질문은 당신의 "객체"가 실제로 무엇인지, 그리고 왜이 컴포넌트들에 대한 링크를 포함하고 있는지입니다 - 저는 상속의 일부 형태를 기대합니다. 이러한 오브젝트가 씬 그래프의 일부라면, 아마도 "노드"가이를 강조 할 것입니다. 그들이 순수하게 "헬퍼"를 프로그래밍하여 이러한 구성 요소를 하나의 목록으로 그룹화하면 "객체"또는 프로그래밍과 관련된 다른 것이 더 좋습니다. 추상적 인 "존재하는 것"인 "Entity"는 "Material"이 엔티티의 속성과 더 비슷하기 때문에 그럴 수 없다. – Thomas
아하 맞습니다. 그래서 "대상"은 OOP를 암시합니다. "자료"는 "개체"의 "측면"또는 속성으로 볼 수 있습니다. 사람들의 마음에 어떤 의미가 있는지, 이것이 도움이되는지 이해하고 싶습니다. – xeolabs
"객체"는 실제 객체를 참조 할 수 있으므로 엄격하게 객체 지향을 의미하지는 않습니다.하지만이 경우 대부분의 사람들은 자신이 듣는다면 생각한다고 생각합니다. 다시, "aspect"또는 "attribute"로 문맥이 중요합니다. 애스펙트가 나에게 좀 더 구어체이거나 추상적 인 것처럼 보이지만 애트리뷰트는 "재질"등을 기술하는 맥락에서 들어 봤다. 모든 것은 당신이 생각하는 배경에 달려있다. 셰이더의 경우 어떤 사람들은 "속성"을 특수 GLSL의 쉐이더 변수이므로, GLSL에 집중하기를 원한다면 다른 것을 원할 수도 있습니다. 그렇지 않으면 괜찮습니다. – Thomas