SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Como GTA o primeiro da saga foi pensado inicialmente......
Como mover persongaem (terceira pessoa) ignorando para onde a câmera aponta
Animação do jogador
[RESOLVIDO] Lista e ativar e desativar funções do script
[RESOLVIDO] Probleminha com ScriptableObject e Dictonary
movimentação de inimigo junto ao cenário
[RESOLVIDO] Unity - Vídeos não são rodados. Faço vídeos ou as Animações?
[RESOLVIDO] Ativação de objetos de acordo com a direção do inimigo
Problema ao tornar personagem filho de outro objeto
Colissão e destruição
[RESOLVIDO] Inventário para iniciantes
Unity3D - Problema de sincronização de armas em jogo multiplayer
War Core FPS - Recrutamento
[RESOLVIDO] Bool que decide se o inimigo tirar voce do jogo ou não
Unity - Giro da câmera ao redor do tabulerio
[RESOLVIDO] Problema no check-in do Plastic SCM
Lançamento Oficial War Core Fps
Qual versão da Unity é mais rápida?
Respawnar O Inimigo em Pontos Aleatórios
DÚVIDA COM OBJETOS TRANSPARENTES, COMO QUE A GPU TRABALHA COM ESSE MODELO?
Divulgação do meu jogo e Canal
Ajuda com logica entre namespace e classes
Dúvida sobre os botões UI,comando de troca de texto por Quest não funciona.
Particle System e Animation Criados no Blender não funciona na Unity
Objeto UI interagir com GameObject
[TUTORIAL] Como criar o MENU INICIAL
JOGO DE RPG COM PET E MUITO MAIS
Animar parte do corpo do personagem dentro do Armature na Unity?
Divulgação do meu primeiro jogo
[____ENQUETE____] Eleições para presidente 2022 (2º turno)
Pegar Objeto
SLOW MOTION EFFECT
Objeto que abre arquivos ao encostar
Fazer objeto sumir após perda de contato com a imagem.
Impedir ação do jogador(a) num local específico
Posição das bordas de um plane referentes as bordas de outro
Sistema de Yu-Gi-Oh! - ATT [2020]
Plataforma Móvel 3D
Interrogação, jogo de puzzle 3D
JOGO ANDROID OPINIAO DE VOCES?
ajuda dados Json não carrega no celular
Imagem VR Quest 2 Screenshot - Salvar a imagem no VR
Converter um script de otimização 3D para 2D
PRoblema com IsGrounded
Música contínua mais transições.
Pedestre se movimentado muito rápido.
sistema de atropelamento
Ajuda com Prefab Urgente!!
Espada ficando TORTA
comparar string e int
UNITY - BRCA AFUNDANDO NA AGUA
Unity - Os ícones da Tela ficam fora do lugar nos simuladores
[____ENQUETE____] Eleições para presidente 2022
Unity - Scene Pesada são os Scripts. Ajuda!
Camera fps (unity) alguem me ajuda pls
Jogador não esta sendo validado em rede multijogador
Unity - Áudios deixam a Scene pesada pra abrir
Alguém ai sabe como fazer a build de um app para android com mais de 150mb?
sensibilidade do mouse
Animação completa em personagem rotacionável pelo mouse
Alguém pode me ajudar
Como fazer com que as partículas sejam puxadas para um ponto específico?
Adicionar png
Lançamento de mais um jogo Dangerous crossing
[____ADERIR A UMA CATEGORIA NO FÓRUM____]
Ativar um objeto quando desativar outro e vice-versa (Unity)
[GRATIS] PACK DE MODELOS 3D PARA JOGO DE TERROR
Upbge gameplay travada
Como ARRUMAR ISSO!
Quem tem JOGO publicado na steam e que fazer parceria para publicação!
RECRUTAMENTO PARA JOGO DE FPS MULTIPLAYER
Unity configurar para compilar para linux
Tamanho da câmera
[RESOLVIDO] ativar isKinematic por 3 segundos e depois desativar
Vídeo sobre problemas comuns em jogos e suas possíveis soluções
[Lançamento] YODA RUNNER DISPONÍVEL PARA ANDROID
[Em Desenvolvimento] App Razor Downloader
Ativar animação de porta abrindo sozinha com trigger n funciona!
Veiculo não esta causando dano ao jogador, após ser destruído.
Preciso de ajuda para importar personagem estilo Minecraft no mixamo
Como fazer um sistema simulando desmembramento dos NPCs em combate?
Progresso jogo clicker
Multiplayer com Network ou Photon?
Baixos de Quebrada, novo jogo para android confiram!
img aparecer so a primeira vez que entra no game
[ASSET] Sistema completo de Auto Save para Editor
Problema com sincronização jogo multiplayer - Photon
Problema no Parallax
Enviar valor de variável para outro script ao apertar um botão.
Melhorar script de som de impacto
Ajuda erro em bool IsGrounded()
PRECISO DE UM PROGRAMADOR PARA AJUDAR NO PROJETO DE FPS (IREI PAGAR)
Serializar Dictionary no Scriptable Object
Quem aqui tem jogos publicados no Steam?
[TUTORIAL] Como fazer um laser com LineRenderer - UNITY 5
Intancias
Adicionar backface culling em um shader
Alguem me ajuda com script simples?
NullReferenceException Object reference not set to an instance of an object
Ontem à(s) 7:42 pm
Ontem à(s) 7:27 pm
Ontem à(s) 3:09 pm
Ter Nov 29, 2022 11:52 pm
Ter Nov 29, 2022 4:15 pm
Seg Nov 28, 2022 9:13 am
Sex Nov 25, 2022 11:59 am
Qui Nov 24, 2022 11:07 pm
Qui Nov 24, 2022 11:05 pm
Qui Nov 24, 2022 10:33 pm
Qua Nov 23, 2022 10:51 am
Sab Nov 19, 2022 11:10 pm
Qua Nov 16, 2022 8:08 pm
Qua Nov 16, 2022 5:23 pm
Qua Nov 16, 2022 5:20 pm
Ter Nov 15, 2022 10:28 am
Seg Nov 14, 2022 3:15 pm
Seg Nov 14, 2022 2:19 pm
Dom Nov 13, 2022 3:34 pm
Sab Nov 12, 2022 6:17 pm
Qua Nov 09, 2022 7:05 pm
Dom Nov 06, 2022 10:16 am
Sab Nov 05, 2022 6:37 pm
Qui Nov 03, 2022 10:04 pm
Qui Nov 03, 2022 9:42 am
Qua Nov 02, 2022 10:28 pm
Qua Nov 02, 2022 12:09 pm
Ter Nov 01, 2022 6:27 pm
Seg Out 31, 2022 10:58 am
Dom Out 30, 2022 7:42 pm
Dom Out 30, 2022 11:46 am
Sab Out 29, 2022 1:47 pm
Qui Out 27, 2022 6:07 pm
Qua Out 26, 2022 7:28 pm
Ter Out 25, 2022 4:33 pm
Qui Out 20, 2022 6:57 pm
Qui Out 20, 2022 11:51 am
Qua Out 19, 2022 7:34 pm
Qua Out 19, 2022 7:06 pm
Qua Out 19, 2022 3:38 pm
Qua Out 19, 2022 3:35 pm
Qua Out 19, 2022 12:24 am
Ter Out 18, 2022 11:13 am
Seg Out 17, 2022 5:16 pm
Seg Out 17, 2022 2:06 pm
Seg Out 17, 2022 1:57 pm
Sab Out 15, 2022 5:29 pm
Sex Out 14, 2022 12:06 pm
Qui Out 13, 2022 9:20 pm
Seg Out 10, 2022 8:22 pm
Sex Out 07, 2022 11:04 pm
Sex Out 07, 2022 9:32 pm
Qui Out 06, 2022 4:34 pm
Qua Out 05, 2022 8:55 pm
Dom Out 02, 2022 8:24 pm
Sab Out 01, 2022 7:05 pm
Sex Set 30, 2022 10:58 pm
Qui Set 29, 2022 10:35 am
Seg Set 26, 2022 6:42 pm
Seg Set 26, 2022 4:55 pm
Dom Set 25, 2022 2:31 pm
Sab Set 24, 2022 8:58 am
Sab Set 24, 2022 8:31 am
Qui Set 22, 2022 9:58 pm
Qua Set 21, 2022 4:34 pm
Qua Set 21, 2022 11:47 am
Qua Set 21, 2022 11:21 am
Qua Set 21, 2022 11:17 am
Seg Set 19, 2022 2:25 pm
Dom Set 18, 2022 6:59 am
Sab Set 17, 2022 1:01 pm
Sab Set 17, 2022 10:35 am
Qua Set 14, 2022 5:44 pm
Ter Set 13, 2022 6:39 pm
Ter Set 13, 2022 9:11 am
Ter Set 13, 2022 9:00 am
Seg Set 12, 2022 11:26 pm
Seg Set 12, 2022 4:40 pm
Dom Set 11, 2022 10:49 pm
Dom Set 11, 2022 5:21 pm
Sex Set 09, 2022 8:10 pm
Qui Set 08, 2022 9:13 pm
Qua Set 07, 2022 10:34 pm
Qua Set 07, 2022 10:09 pm
Ter Set 06, 2022 6:30 pm
Ter Set 06, 2022 11:01 am
Seg Set 05, 2022 7:33 pm
Sex Set 02, 2022 5:50 pm
Sex Set 02, 2022 10:28 am
Qui Set 01, 2022 1:27 pm
Qua Ago 31, 2022 12:49 am
Ter Ago 30, 2022 11:44 am
Seg Ago 29, 2022 2:03 pm
Dom Ago 28, 2022 6:31 pm
Qui Ago 25, 2022 4:58 pm
Sab Ago 20, 2022 3:27 pm
Sex Ago 19, 2022 5:50 pm
Sex Ago 19, 2022 10:03 am
Sex Ago 19, 2022 2:35 am
Rangel Oblivion
Rangel Oblivion
AGAMENOM
AGAMENOM
dutrabr100
MarcosSchultz
WLCS22
AGAMENOM
MarcosSchultz
MarcosSchultz
erickfabio366
ProBrStalker
Sheyk
AGAMENOM
WLCS22
gabrimo
Sheyk
WLCS22
leetmz
Crash Psycho
Crash Psycho
stratengine
Fluttershy28
WLCS22
Fluttershy28
Snorre
IgorFporto
WLCS22
Fluttershy28
stratengine
stratengine
stratengine
AGAMENOM
joaovictori00
Rangel Oblivion
gabrimo
Insurgente
Rangel Oblivion
Rangel Oblivion
claudiano2020
claudiano2020
c4stor
rafaelllsd
Fluttershy28
Fluttershy28
HaresHent
dutrabr100
claudiano2020
dutrabr100
claudiano2020
Magic D
WLCS22
MarcosSchultz
WLCS22
dutrabr100
ProBrStalker
WLCS22
Fluttershy28
CelU93
Leonardo2700
Weslley
dutrabr100
dutrabr100
Patrick
MarcosSchultz
Weslley
Weslley
Weslley
lovuxd
thales.ulisses
Sheyk
NoctisDregon
dutrabr100
ApcRaffs
Rangel Oblivion
Rangel Oblivion
rafaelllsd
lovuxd
Weslley
Crash Psycho
CelU93
Weslley
Édipo
Édipo
Andrewkeny
Rangel Oblivion
Caio Cesar Miguel
Hohenheim
dutrabr100
Rangel Oblivion
RenanHero
Édipo
Weslley
thales.ulisses
Rangel Oblivion
JoaoVitwoh
SteveRogers
Rangel Oblivion
Sheyk

Posição local do pixel de um quad

2 participantes

Ir para baixo

DÚVIDA Posição local do pixel de um quad

Mensagem por gabrimo Sab Jun 04, 2022 2:12 pm

Olá, tenho um quad com uma imagem qualquer, por exemplo:

Posição local do pixel de um quad YBox7

Eu preciso pegar a posições dos pixels pintados relativos ao quad (de preferência). Tentei usar o GetPixels(), acontece que ele retorna um array de Color, o que significa que não tenho como pegar as posições desta forma. Já tentei pesquisar por aí e não encontrei uma forma de fazer o que eu preciso. Abri threads no fórum da Unity e no Stack Overflow e nada. Começo a suspeitar de que o único jeito é criar uma solução customizada usando algum shader, assunto do qual não tenho praticamente nenhum conhecimento. Posso fornecer mais contexto se necessário, mas quis ser o mais sucinto possível. Enfim, se alguém tiver alguma sugestão, sou todo ouvidos.
gabrimo
gabrimo
MembroAvançado

Masculino PONTOS : 1665
REPUTAÇÃO : 16
Idade : 29
Áreas de atuação : Modelagem, programação e um pouco de todo o resto!
Respeito as regras : Posição local do pixel de um quad WvDYdlf

https://www.patreon.com/dynamic_kit_generator

Ir para o topo Ir para baixo

DÚVIDA Re: Posição local do pixel de um quad

Mensagem por SteveRogers Sab Jun 04, 2022 11:17 pm

Usando o GetPixels() funciona, você só precisa converter o índice do array numa matriz.
> dividindo o índice do pixel opaco pela largura da imagem você obtém o valor de Y desse pixel;
> realizando o modulo(%) entre o índice do pixel opaco com a largura em pixels, você obtém o valor de X do pixel.

Tendo os dois valores absolutos de  X e Y aí fica mole pra calcular posições em qualquer coordenada, local, world, normalizado, etc.

Package com cena de exemplo.

Código:
using System.Collections.Generic;
using UnityEngine;

public class Pixel : MonoBehaviour
{
    [SerializeField] private Texture2D tex;
    [SerializeField] private Transform quad;
    [SerializeField] private Vector2 quadSize;

    Vector2 temp = Vector2.zero;
    Vector2Int tempixel = Vector2Int.zero;
    Vector3 tempWorld = Vector3.zero;

    //Debug
    public Transform debugPoint;

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            GetPixelData();
        }
    }

    private void GetPixelData()
    {
        Color[] data = tex.GetPixels();
        List<int> opaquePixels = new List<int>();

        for (int i = 0; i < data.Length; i++)
        {
            if (data[i].a > 0)
            {
                opaquePixels.Add(i);
            }
        }

        print("Total texture pixels = " + data.Length);
        print("Opaque pixels = " + opaquePixels.Count);

        Vector2[] normalizedPositions = new Vector2[opaquePixels.Count];
        Vector2Int[] pixelPositions = new Vector2Int[opaquePixels.Count];
        Vector3[] worldPositions = new Vector3[opaquePixels.Count];

        for (int i = 0; i < opaquePixels.Count; i++)
        {
            tempixel.x = opaquePixels[i] % tex.width;
            tempixel.y = opaquePixels[i] / tex.width;

            temp.x = (float)tempixel.x / (float)tex.width;
            temp.y = (float)tempixel.y / (float)tex.height;

            tempWorld = quad.position;
            //Do centro pra borda
            tempWorld -= (quad.right * (quadSize.x / 2.0f));
            tempWorld -= (quad.up * (quadSize.y / 2.0f));
            //Da borda pro pixel
            tempWorld += (quad.right * (temp.x * quadSize.x));
            tempWorld += (quad.up * (temp.y * quadSize.y));

            pixelPositions[i] = tempixel;
            normalizedPositions[i] = temp;
            worldPositions[i] = tempWorld;
        }

        print("First opaque pixel coord > x=" + pixelPositions[0].x + "/y=" + pixelPositions[0].y);
        print("First opaque pixel normalized > x=" + normalizedPositions[0].x + "/y=" + normalizedPositions[0].y);

        print("World space pixel coord");
        debugPoint.transform.position = worldPositions[0];
    }
}
SteveRogers
SteveRogers
Instrutor

Masculino PONTOS : 1951
REPUTAÇÃO : 156
Respeito as regras : Posição local do pixel de um quad Aad8pUi

Ir para o topo Ir para baixo

DÚVIDA Re: Posição local do pixel de um quad

Mensagem por gabrimo Dom Jun 05, 2022 10:45 am

SteveRogers escreveu:Usando o GetPixels() funciona, você só precisa converter o índice do array numa matriz.
> dividindo o índice do pixel opaco pela largura da imagem você obtém o valor de Y desse pixel;
> realizando o modulo(%) entre o índice do pixel opaco com a largura em pixels, você obtém o valor de X do pixel.

Tendo os dois valores absolutos de  X e Y aí fica mole pra calcular posições em qualquer coordenada, local, world, normalizado, etc.

.....

Valeu cara, eu não sabia dessas operações que tu recomendou aí. É aquela coisa, já estou nessa vida a uns 2 anos e ainda sinto que não sei quase nada hahah

Eu ainda não vou testar porque a utilização dessa função vai implicar em mudanças um pouco profundas no meu projeto e eu preciso liberar um novo alpha nos próximos dias. Mesmo assim eu gostaria de já ir vendo como se faz para ir planejando os próximos passos.

Eu andei falando contigo algumas vezes no whats nos últimos meses mas não obtive resposta, tu trocou de número ou algo assim? Se este for o caso e tu não te importar, me passa o teu contato novo via mensagem privada...

Obrigado novamente por tudo, tu parece uma das únicas pessoas na internet que alia conhecimento e disposição para ajudar com essas dúvidas menos óbvias (para mim ao menos).
gabrimo
gabrimo
MembroAvançado

Masculino PONTOS : 1665
REPUTAÇÃO : 16
Idade : 29
Áreas de atuação : Modelagem, programação e um pouco de todo o resto!
Respeito as regras : Posição local do pixel de um quad WvDYdlf

https://www.patreon.com/dynamic_kit_generator

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos