Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SRTM + Simulacao 3D Blender #1

Open
hugoaboud opened this issue Jan 30, 2019 · 23 comments
Open

SRTM + Simulacao 3D Blender #1

hugoaboud opened this issue Jan 30, 2019 · 23 comments
Labels
in progress Actively being worked on. proposal Proposed feature or enhancement.

Comments

@hugoaboud
Copy link

A EngeSat disponibilizou alguns dados de topografia da regiao: http://www.engesat.com.br/sobre-brumadinho-mg-dia-25-01-19/
Ate agora sao os dados de elevacao com maior resolucao que encontrei.
É possivel cruzar essas informacoes com informacoes de satelite utilizando o software QGIS.

Fiz um crop da area afetada: um GeoTIFF de elevacao do terreno (infelizmente a resolucao nao e muito grande) e uma imagem RGB de terreno.

Importei esses dados no Blender e preparei um projeto para simulacao de fluidos (PS: a escala do projeto 'e de 1:100). É possivel extrair os vetores de velocidade da simulacao, porem ainda nao cheguei la.

Possuo pouco poder de processamento e RAM, entao rodei uma simulacao em baixa resolucao aqui, os resultados sao razoaveis pra comecar o desenvolvimento:

brumadinho

@hugoaboud
Copy link
Author

Por enquanto esse 'e o melhor resultado que cheguei (interrompi a simulacao neste ponto).

brumadinho
simres

@pictos
Copy link

pictos commented Jan 30, 2019

@hugoaboud , se conseguirmos uma VM na nuvem, vc consegue rodar isso por completo?

@hugoaboud
Copy link
Author

@pictos Seria bem bom! Eu uso Arch Linux, mas se for outra distro da pra fazer tambem.
O Blender nao oferece muitas opcoes de modelagem do fluido, apenas viscosidade e um fator de inercia pro terreno, mas acho que essa simulacao pode ser um bom primeiro passo.
Acho que agora seria razoavel descobrir como funcionam os vetores de velocidade que o blender cria e desenvolver uma aplicacao que crie uma trajetoria com base neles.

@pictos
Copy link

pictos commented Jan 30, 2019

@hugoaboud vc está no grupo do telegram? Se estiver me procure por lá "Pedro Jesus", mais fácil de comunicar... Vou agilizar aqui a questão de arranjar uma VM.

@andrebassi
Copy link

@pictos @hugoaboud -> Se precisarem de ajuda com infra, me acionem.

@caiocarrara
Copy link
Contributor

@hugoaboud -- muito interessante o que você conseguiu até agora! Parece promissor. Precisa de ajuda com alguma coisa?

Eu tenho várias dúvidas, até por não dominar muito essa área:
Como conseguiremos integrar essa solução com os outro(s) módulo(s) do sistema?
Qual é a interface de comunicação dessa simulação?
É possível gerar um geojson, por exemplo, da área atingida?
Você chegou a comparar a predição da sua solução com o caso real de Brumadinho?

Enfim, precisando de qualquer coisa é só chamar!

@caiocarrara
Copy link
Contributor

Pessoal que está nessa issue, pelo que entendi esse assunto está relacionado com a predição da localização de vítimas. Correto? Me corrijam se eu estiver errado.

Dessa forma, estou transferindo essa issue para o projeto que vai abrigar esse assunto. Beleza? Qualquer coisa posso voltar a issue para cá (eu acho).

cc @vaniaon

@caiocarrara caiocarrara transferred this issue from sosbrumadinho/brumadinho_location Jan 31, 2019
@hugoaboud
Copy link
Author

hugoaboud commented Jan 31, 2019

@cacarrara, nessa 3a imagem que eu mandei tem uma comparacao: a linha azul 'e a informacao real de dispersao da lama, a mancha marrom 'e a simulacao.
Essa simulacao rodou com uma resolucao muito baixa, tem mais de 1m de distancia entre as particulas, mas acho que se mostrou razoavel.

Atualmente meu plano pra integracao 'e:

  • usar o Blender pra criar uma simulacao que apresente resultados proximos do real
  • exportar os vetores de velocidade dessa simulacao
  • criar um algoritmo em C++ usando a ReactPhysics3D que aplica a forca do fluido simulado e resolve colisao, friccao, etc

Dessa forma, eu pretendo criar uma pequena lib C++ que recebe uma pasta com arquivos de vetores do fluido, um objeto que descreve o terreno e uma posicao inicial; e retorna a possivel trajetoria feita por aquele objeto. Essa lib pode depois ser integrada ao web service.

@caiocarrara
Copy link
Contributor

Muito bom @hugoaboud!! Se você quiser e achar necessário podemos criar um projeto específico para essa lib na org SOSBrumadinho para centralizar o trabalho. Obrigado!

@rphbc
Copy link

rphbc commented Jan 31, 2019

@hugoaboud Ficou fera Hugo!!
Eu estou em contato com algumas iniciativas oferecendo infra para o nosso projeto.
Qual a especificação de máquina que você precisa para rodar essa simulação integralmente e com a resolução adequada? Você tem uma ideia?

@hugoaboud
Copy link
Author

hugoaboud commented Jan 31, 2019

Subi o que já tenho até agora pra gente pensar em como integrar isso ao projeto.
https://github.com/hugoaboud/fluidtrack

Tentei explicar com mais detalhes no README, mas a ideia é:

  • Cria a simulação de flúido no Blender;
  • Roda um script em python que exporta o resultado da simulação pra um arquivo binário;
  • Roda a biblioteca C++ que usa os dados pré-simulados do flúido pra gerar o caminho que um objeto percorreria partindo de um dado ponto
  • Roda um script no Blender pra importar o caminho pra visualizar

Eu montei essa cena chamada "sandbox" apenas pra desenvolver a biblioteca. Agora vou montar a cena de Brumadinho novamente e iniciar os testes. Vou fazendo os commits ao longo do processo.
Assim que tiver algum resultado com a cena nova vou fazer a relação das coordenadas do objeto com as coordenadas de GPS do GeoTIFF usado pra gerar o terreno pra poder plotar corretamente o caminho no mapa.
Preciso de apoio pra integrar isso ao sistema web, transformar em biblioteca, fazer os wrappers, etc.

A modelagem da interação do objeto com o flúido ainda está bem primitiva, porém o framework está setado pra que possamos inserir as principais características e criar um modelo razoável. Gostaria de iniciar essa discussão em outra issue. São questões de matemática/física como por exemplo: como relacionar a velocidade do liquido com a força que ele exerce sobre o corpo? como a profundidade do objeto (considerando o tipo de flúido) influencia no empuxo? etc

@hugoaboud
Copy link
Author

@hugoaboud Ficou fera Hugo!!
Eu estou em contato com algumas iniciativas oferecendo infra para o nosso projeto.
Qual a especificação de máquina que você precisa para rodar essa simulação integralmente e com a resolução adequada? Você tem uma ideia?

Bacana! Então, a simulação exige muita memória RAM e não suporta GPU. Tenho um i7 (4 core) aqui e usando 3 cores ele ainda é bem lento. Acredito que o mínimo seria uma CPU 8 core + 16GB de RAM.
O bom é que depois de gerar o binário do flúido, o cálculo de caminho é bem rápido pra cada ponto que for pedido.

@caiocarrara
Copy link
Contributor

Opa, eu tenho i7 8 núcleos e 16GB de RAM aqui. Vou tentar rodar. Só seguir as instruções do README do seu projeto @hugoaboud ??

@caiocarrara
Copy link
Contributor

@hugoaboud se puder explicar como que usa o executável fluidtrack. Eu consegui compilá-lo mas não sei o que preciso fazer para gerar a simulação a partir daí.

@hugoaboud
Copy link
Author

@cacarrara

A simulação do flúido você faz no Blender. Abre o projeto sim/sandbox/sandbox.blend e faz o seguinte:

bake

Aí você consegue ver a animação do flúido no Blender usando a timeline em baixo.
Feito isso, usa o script parse_cache.py pra gerar o binário do flúido:

python scripts/parse_cache.py sim/sandbox/cache_fluid sim/sandbox/sandbox.flow 2

Aí você roda o executável passando como argumento o arquivo do terreno (que já tá exportado em sim/sandbox/sandbox.csv), o arquivo de flow e o nome da saída:

./fluidtrack sim/sandbox/sandbox.csv sim/sandbox/sandbox.flow sandbox.csv

Isso deve gerar o arquivo sandbox.csv na pasta do executável. Ele tem as posições e rotações do objeto em cada frame. Pra importar isso no Blender e visualizar:

import_anim

Eu tô montando agora a cena com o terreno da região, ao invés dessa que foi só pra desenvolver a lib. Já vou subir já.

@caiocarrara
Copy link
Contributor

@hugoaboud boa! Consegui fazer aqui. Só não encontrei onde ajustar para a simulação utilizar mais recursos da máquina. A minha timeline aqui do movimento ficou bem parecida com a sua. Talvez com o terreno real haja alguma melhora.

@hugoaboud
Copy link
Author

hugoaboud commented Jan 31, 2019

Quando você vai dar Bake na simulação, em baixo tem um campo "Resolution Final", aumenta ele que você vai ver a previsão de ram no botão de Bake subir. Além disso, escolhe "Final" no "Viewport Display".
Esse é um mundo pequeno, então uma resolução baixa (~100) já funciona. Porém naquela primeira simulação que eu postei eu estava com resolução 300 e ainda assim ficou uma distância de 8~10m entre as partículas do flúido. Devo postar em mais uma ou duas horas a simulação nova, já em um Pull Request pra esse repositório.

@caiocarrara
Copy link
Contributor

@hugoaboud perfeito. Pode manter tudo dentro de um diretório chamado fluidtrack aqui nesse repositório ;)

@pictos pictos added in progress Actively being worked on. proposal Proposed feature or enhancement. labels Feb 1, 2019
@hugoaboud
Copy link
Author

hugoaboud commented Feb 1, 2019

Fiz um novo commit com as seguintes alterações:

  • Arquivo JSON pra configuração da simulação
  • Cena primitiva de Brumadinho

brumadinho2

Como comentei no Pull Request, se alguém estiver disponível seria bom ir preparando a camada web aqui nesse repo.
Os próximos passos são:

  • Refinar a modelagem da simulação do flúido
  • Refinar a física do algorítimo de tracking

Vou abrir uma issue pra cada, pois exigem suporte de muitos ramos (geologia, matemática, física, etc).

@pictos
Copy link

pictos commented Feb 1, 2019

@hugoaboud , por favor olhe essa issue.

sosbrumadinho/ideas_and_requests#7

@salatielaraujo
Copy link

Boa tarde. Desde o evento de Brumadinho estou disponibilizando no Google Drive produtos que creio serem interessantes para as tarefas de resgate ( https://drive.google.com/drive/u/0/folders/1sZkhLY8UT125OlUD41Q_r1AkMezVxln9 ). Dentro do Drive tem um arquivo do tipo shapefile com as curvas de nível de 1 em 1 m da área quente que a Vale disponibilizou (esse produto é bem melhor do que o SRTM) . Essas curvas de nível seriam bem interessantes para melhorar as modelagens. Tem também o contorno da área quente em KMZ. Tem também um mapa preliminar de espessura da lama em função das curvas de nível e dos contornos da área quente. Para melhorarmos o mapa de espessura da lama precisaremos que a Vale nos envie o levantamento LIDAR que eles fizeram pós evento. Alguém poderia tentar obter essa informação ? Se precisarem de mais alguma informação estou a disposição.

@pictos
Copy link

pictos commented Feb 2, 2019

@salatielaraujo na verdade temos um pedido. Para essa simulação, estamos usando dados fictícios. Porém o ideial seria termos um gabarito. No caso 2 dados que informem o ponto(latitude, longitude) inicial de um corpo e ponto onde foi encontrado. Vc acha q é possível? Não precisa da identificação do corpo, apenas as coordenadas.

@salatielaraujo
Copy link

Texto interessante sobre o fenômeno da tixotropia: https://www.facebook.com/ulf.hermannmondl/posts/2331368833575001
que versa sobre a viscosidade do material da Barragem I quando do seu rompimento.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in progress Actively being worked on. proposal Proposed feature or enhancement.
Projects
None yet
Development

No branches or pull requests

6 participants