Я видел несколько движков javascript для webgl. Терминология для каждого была различной.
Различие между «сущностью» и «игровым объектом»?
Обычно объект - это то, что вы можете воспринимать с помощью зрение и/или прикосновения. Хотя сущность может восприниматься только с шестым чувством или совсем не (две камеры в сцене не могут воспринимать друг друга). Каждый объект является сущностью, но не каждый объект представлен объектом.
В программировании Камера, огни, модели, сцена, все они нуждаются в положении, вращении и масштабе. Также многое зависит от того, что здесь происходит еще одно важное слово: Узел.
В иерархии ООП Узел является первым. Он имеет ровно один родитель, кроме первого узла, который не имеет ни одного, и ноль или более детей. Объект расширяет узел. Он имеет положение, поворот, масштаб + родитель, дети. Каждое преобразование повлияет на всех детей. Объект расширяет объект. Объект может иметь дополнительные различные свойства, такие как набор сеток, (каждый объект состоит из одной или нескольких сетки, каждая из которых имеет материал).
Советы:
Иногда бесполезно иметь 3 различных объектов в иерархии ООП. Большинство двигателей объединяют их в один объект или два, а разные компоненты могут исключать свойства в конструкторе. Например, глобальный свет не нуждается в положении, вращении или масштабе. Направленный свет не нуждается в положении и масштабе, но требует вращения. Но расширение всей иерархии ООП только из-за двух компонентов не стоит.
В playcanvas его название - Entity. В трех словах это имя Object3D. Имя может быть также GraphNode или Node, так как оно находится в cocos2d (который является 2d-движком).
У меня нет литературы, но я согласен с Томасом в этом: старайтесь избегать таких слов, как Object, Node, потому что это сбивает с толку. Я думаю, что лучшим именем для объединения этого является Entity, но это не имеет ничего общего с тем, что более или менее, или описанием самого слова. Самое главное, что вы и другие находите в замешательстве.
Я не думаю, что есть литература в этой области, которая не представляет личного вкуса ее автора.Вопрос в том, каков ваш «объект» и почему он содержит ссылку на эти компоненты - я бы ожидал некоторую форму наследования здесь. Если эти объекты являются частью графика сцены, возможно, «узел» прав, чтобы подчеркнуть это. Если они просто программируют «помощники», группировать эти компоненты в один список «объект» или что-то еще, связанное с программированием, лучше. «Сущность» как абстрактная «вещь, которая существует» может быть не так, поскольку «материал» больше похож на атрибут объекта. – Thomas
Aha right - так что «объект» подразумевал бы ООП. «Материал» можно рассматривать как «аспект» или атрибут «сущности». Думаю, я просто хочу понять, что влияет на умы людей, это помогает. – xeolabs
«Объект» не будет строго подразумевать oop, поскольку он может также ссылаться на объект реального мира - но я думаю, что в этом случае большинство людей думает о oop, если они его слышат. Опять же, с «аспектом» или «атрибутом» контекст имеет значение. Хотя аспект кажется более разговорным или абстрактным для меня, атрибут - это нечто, что можно услышать в контексте описания «материалов» и т. Д. Все зависит от настройки, в которой вы думаете. Если речь идет о шейдерах, некоторые люди могут воспринимать «атрибут» как особый shader variable в GLSL, поэтому, если вы хотите сосредоточиться на GLSL, вам может понадобиться что-то другое, но в остальном это нормально. – Thomas