Partilhar via


BoundsControl – MRTK3

Controlo de limites

BoundsControl fornece uma caixa delimitadora de tamanho automático, juntamente com as acessibilidades de manipulação para rotação e dimensionamento.

No MRTK 2.x, BoundsControl foi gerado principalmente por runtime através da utilização de scriptableObjects de configuração. No MRTK3, a configuração e personalização do BoundsControl foi significativamente simplificada. Os elementos visuais e identificadores de limites são simplesmente uma prefab personalizável que BoundsControl instancia no runtime. Os programadores podem ajustar e personalizar os elementos visuais pré-fabricados ou até mesmo criar novos elementos visuais vinculados do zero. Fornecemos implementações de elementos visuais de limites padrão, seguindo o novo Idioma de Estrutura Mixed Reality.

Os novos elementos visuais oferecem feedback visual simplificado que ilustra a intenção do utilizador e a manipulação do objeto com um ruído visual minimamente intrusivo.

Configuração

Basta adicionar BoundsControl a um objeto existente e preencher a BoundsVisualsPrefab referência com os elementos visuais vinculados que pretende utilizar. Fornecemos alguns elementos visuais de limites pré-criados diferentes para que possa utilizar.

Importante

Recomendamos vivamente que os programadores adicionem MinMaxScaleConstraint para impedir que o utilizador dimensione o objeto para um tamanho inutilmente pequeno ou grande.

Para utilizar a intenção dos elementos visuais vinculados e os efeitos de foco, tem de ter um StatefulInteractable no objeto. Se o interacionável não for detetado automaticamente, pode especificar a ligação no inspetor BoundsControl.

Nota

Recomendamos que os programadores utilizem o ObjectManipulator juntamente com o BoundsControl para oferecer manipulação direta aos utilizadores, além da manipulação baseada na acessibilidade. O ObjectManipulator pode servir como o para os StatefulInteractable estados de pairar/focar a que os elementos visuais vinculados respondem.

Pré-visualizações de elementos visuais vinculados

Oferecemos vários elementos visuais de limites pré-criados para utilização com BoundsControl. Os programadores são encorajados a fazer variantes pré-fabricadas destes elementos visuais e personalizá-los de acordo com as suas necessidades. As animações e estados do identificador são alimentados pelo StateVisualizer, permitindo aos programadores personalizar ainda mais o aspeto e a funcionalidade das acessibilidades.

Lidar com o estilo de oclusão

Estes elementos visuais vinculados oferecem um design visual simplificado com menos distrações para o utilizador. Apenas as alças relevantes ao longo das margens dos limites estarão visíveis. Os elementos visuais vinculados contraem, expandem e alteram a cor/espessura consoante a intenção do utilizador e o progresso da seleção. Recomendamos vivamente a utilização deste estilo visual vinculado.

Identificadores ocultos

Apenas intenção

Em alguns contextos, as alças podem ser indesejáveis e os programadores podem querer utilizar apenas os elementos visuais vinculados como um indicador delicioso da intenção do utilizador. Embora esta prefab faça a tarefa, o mesmo efeito pode ser alcançado com qualquer um dos outros elementos visuais vinculados ao selecionar HandleType.None. Descobrimos que os elementos visuais de limites espremíveis são um elemento de feedback visual satisfatório e delicioso para muitos contextos diferentes, não apenas para manipulação baseada em alças.

Sem alças

Estilo legado

Estes elementos visuais de limites mostram todas as alças e arestas da caixa. Isto corresponde mais de perto à linguagem de design legada e ao comportamento anterior observado no MRTK 2.x; no entanto, esta estrutura pode ser mais distraída para os utilizadores devido a ruídos visuais desnecessários. Além disso, a presença das alças que estão à frente do objeto (e por trás) pode causar problemas com a manipulação indireta de aproximar o olhar. Não recomendamos a utilização deste estilo para novas aplicações, especialmente aquelas que tiram partido da segmentação de olhares.

Alças tradicionais

Design de interação

Na iteração atual, oferecemos uma interação de ativação/desativação simples. Ao clicar nos limites no local (por outras palavras, selecionar o objeto, não movê-lo e soltá-lo), as alças podem ser ativadas e desativadas. A tolerância à distância para esta verificação pode ser ajustada com DragToggleThresholde este comportamento de ativação em si pode ser ativado/desativado com a ToggleHandlesOnClick propriedade.

Botão de alternar controlo limites

As alças podem ser ativadas manualmente ou desativadas do código em qualquer altura ao definir HandlesActive.

Cálculo de limites automáticos

BoundsControl tentará calcular automaticamente os limites do objeto associado. Se for pretendida uma forma de limites específica, verifique a opção OverrideBounds e especifique o objeto de limites diretamente. O sistema de cálculo bounds só calculará os limites do objeto de substituição especificado.

O BoundsCalculationMethod influencia a forma como o algoritmo calcula os limites. Se a forma visual do objeto incluído não corresponder necessariamente ao colisor ou o contrário for verdadeiro, os programadores podem ajustar o método de cálculo para preferirem utilizar os limites de composição ou colisão ou uma combinação de ambos.

Independentemente do método de cálculo, a opção Padding irá encadear os limites uniformemente em unidades mundiais. Quando os limites são achatados, o eixo achatado não é acolchoado.

Aplanar

Controlo de Limites Achatados

BoundsControl também pode ser utilizado para manipular conteúdo 2D. Se FlattenMode estiver definido como Auto, o BoundsControl irá aplanar-se a um limite retangular 2D se o objeto estiver suficientemente plano ao longo de qualquer eixo. Se o objeto não for suficientemente plano, mas ainda assim gostaria de ter limites retangulares, FlattenMode.Always irá sempre aplanar o BoundsControl ao longo do eixo mais esfolado. Por outro lado, FlattenMode.Never impedirá que o BoundsControl aplane, mesmo quando o objeto é muito fino.

Opções de manipulação

O comportamento de manipulação do BoundsControl pode ser ajustado de várias formas. A RotateAnchor opção controla o ponto dinâmico em torno do qual o BoundsControl é rodado ao utilizar as acessibilidades de rotação. Os pontos dinâmicos de alguns objetos estão longe do centro visual, o que pode causar desconforto e imprecisão ao manipular com as alças de rotação. Especificar BoundsCenter para o RotateAnchor fará com que o BoundsControl rode sempre em torno do centro geométrico dos limites calculados em vez da origem real do objeto.

O comportamento de dimensionamento pode ser definido como ou UniformNon Uniform. No modo Uniforme, todos os eixos do objeto são dimensionados em conjunto, mantendo a proporção e o aspeto. O dimensionamento não uniforme permite que cada eixo do objeto seja dimensionado de forma independente.