Posição das bordas de um plane referentes as bordas de outro
Página 1 de 1
Posição das bordas de um plane referentes as bordas de outro
Boa tarde, preciso adaptar um método já existente que calcula as bordas de um plane com relação a outro plane para o meu projeto.
O @SteveRogers me ajudou a vários meses atrás com um código base, que eu adaptei para a minha necessidade. Acontece que o código original só funciona adequadamente se o plane de referência é quadrado e eu precisaria modificar ele para que planes de referência retangulares também fossem compatíveis.
Como verifiquei que ele não loga aqui a mais de um mês, vou postar uma imagem ilustrando o que eu preciso que o código faça para ter mais chance de outra pessoa me ajudar.
Meu objetivo é saber a posição das 4 bordas do plane branco (branco) com relação às bordas do plane grande (azul). Esse resultado precisa estar normalizado e seguir a direção especificada pelas setas. A cena é 3D e os elementos são 2 quads um em frente do outro.
O meu código base, que funciona para planes de referência quadrados conforme mecionado, é este:
Já tentei alterar basicamente todas as variáveis da equação, mas não consegui encontrar um forma na qual os resultados se comportem de forma mais consistente. Meu projeto é uma ferramenta de modificação para FIFA, então eu tenho os valores das bordas para comparação direto dos arquivos do jogo, é assim que eu sei se o resultado está correto ou não.
Enfim, há mais dados que devem ser importantes para a equação, mas eu vou deixar o post o mais curto possível nesse primeiro momento.
Agradeço desde de já caso alguém que saiba a solução me ajude nessa!
O @SteveRogers me ajudou a vários meses atrás com um código base, que eu adaptei para a minha necessidade. Acontece que o código original só funciona adequadamente se o plane de referência é quadrado e eu precisaria modificar ele para que planes de referência retangulares também fossem compatíveis.
Como verifiquei que ele não loga aqui a mais de um mês, vou postar uma imagem ilustrando o que eu preciso que o código faça para ter mais chance de outra pessoa me ajudar.
Meu objetivo é saber a posição das 4 bordas do plane branco (branco) com relação às bordas do plane grande (azul). Esse resultado precisa estar normalizado e seguir a direção especificada pelas setas. A cena é 3D e os elementos são 2 quads um em frente do outro.
O meu código base, que funciona para planes de referência quadrados conforme mecionado, é este:
- Código:
public Vector4 Calculate()
{
coordinates = new Vector4(0, 0, 0, 0);
panelOffset = new Vector3(0.5f, 0.5f, 0); /*acredito que isso tenha relação com a escala do plane de referência,
que é de 1x1 neste caso*/
Vector3 posDecalNormalized = decalTransform.position + panelOffset;
//X=borda esquerda - z = borda direita
float x = posDecalNormalized.x - decalTransform.localScale.x / 2;
float z = posDecalNormalized.x + decalTransform.localScale.x / 2;
//W=borda inferior - Y= borda superior
float w = posDecalNormalized.y - decalTransform.localScale.y / 2;
float y = posDecalNormalized.y + decalTransform.localScale.y / 2;
/*As bordas verticais ficam com os valores invertidos e precisam ser corrigidas manualmente, talvez haja um jeito melhor,
mas eu acabei deixando assim já que funcionou*/
y = 1 - y;
w = 1 - w;
coordinates.x = x;
coordinates.y = y;
coordinates.z = z;
coordinates.w = w;
return coordinates;
}
Já tentei alterar basicamente todas as variáveis da equação, mas não consegui encontrar um forma na qual os resultados se comportem de forma mais consistente. Meu projeto é uma ferramenta de modificação para FIFA, então eu tenho os valores das bordas para comparação direto dos arquivos do jogo, é assim que eu sei se o resultado está correto ou não.
Enfim, há mais dados que devem ser importantes para a equação, mas eu vou deixar o post o mais curto possível nesse primeiro momento.
Agradeço desde de já caso alguém que saiba a solução me ajude nessa!
Re: Posição das bordas de um plane referentes as bordas de outro
O @SteveRogers acabou me respondendo via whats e me enviou uma nova versão do código, dessa vez ele se aplica a qualquer tamanho de quad, então vou postar aqui para futura referência caso sirva de ajuda a outra pessoa:
Agradeço demais a ele novamente...
- Código:
void Calculate()
{
Bounds referenceBounds = referenceMeshRenderer.bounds;
Bounds decalBounds = decalMeshRenderer.bounds;
float minX = Mathf.InverseLerp(referenceBounds.min.x,
referenceBounds.max.x, decalBounds.min.x);
float maxX = Mathf.InverseLerp(referenceBounds.min.x,
referenceBounds.max.x, decalBounds.max.x);
float minY = 1 - Mathf.InverseLerp(referenceBounds.min.y,
referenceBounds.max.y, decalBounds.min.y);
float maxY = 1 - Mathf.InverseLerp(referenceBounds.min.y,
referenceBounds.max.y, decalBounds.max.y);
coordinates = new Vector4(minX, maxY, maxX, minY);
Debug.Log(coordinates.ToString("F6"));
}
Agradeço demais a ele novamente...
Tópicos semelhantes
» Saber a posiçao e rotaçao que um trigger bateu no outro
» Como faço para mudar a posição de um objeto para perto de outro.
» Como mudar rotacao de um objeto em relacao a posicao do outro objeto
» Como transformo a posição de um objeto em outra posição?
» Pegar a posição
» Como faço para mudar a posição de um objeto para perto de outro.
» Como mudar rotacao de um objeto em relacao a posicao do outro objeto
» Como transformo a posição de um objeto em outra posição?
» Pegar a posição
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos