Edição de mesh no X-Plane


 

test_mesh_03

Este não é um assunto trivial, até agora não tínhamos nenhuma ferramenta com uma interface intuitiva que possibilitasse a edição. A única edição possível era através de programas e scripts executados em linha de comando e não existia uma maneira de visualizar o que estava sendo editado. O programa que apresento, ainda com o nome provisório de “Mesh Remexe”, é uma tentativa de facilitar alguns processos nesta tarefa. A abordagem utilizada é converter a informação do Mesh em Objeto 3D, editar em algum editor 3D, e novamente converter em informação de Mesh. Mesmo com o programa, esta não é uma tarefa completamente automatizada. É necessário um bom planejamento e certa habilidade em alguns processos. É necessário conhecimento sobre a edição de cenários e uma certa habilidade com Sketchup ou algum outro programa 3D onde se possa importar e exportar objetos para o X-Plane.

Dependendo do local que desejamos editar ou tipo de edição a ser realizada, pode aumentar, não a dificuldade, mas sim a quantidade de trabalho até obter o resultado esperado. O programa exige uma instrução mais detalhada, mas vamos começar com algo mais sucinto.

Atenção!!! Antes de qualquer coisa, faça backup de tudo!!

1º) Defina a área que deseja corrigir o Mesh. A área será um retângulo onde duas coordenadas definirão suas extremidades.
Pode ser utilizado algum programa/site de mapas (Ex. Google Maps) ou mesmo o próprio X-Plane. No X-Plane, no menu Localização -> Mapa local, marque “editar” e crie auxílio (NDB, VOR, etc). Posicione e copie suas coordenadas. Mova o seu auxilio para a outra extremidade e copie novamente. Como se fossem as extremidades Superior-Esquerda e Inferior-direita de um retangulo, depois exclua o auxílio. Esta área será a nossa referência de trabalho.

2º) Na pasta “…\X-Plane 10\Global Scenery\X-Plane 10 Global Scenery\Earth nav data\”, entre na pasta referente a sua coordenada. Ex. se suas coordenadas são: “-20 44.087” e “-043 47.911”, arrendonde para a dezena acima. Então ficará -30-050. Entre na pasta e escolha o arquivo, agora arrendondando apenas uma unidade acima. Nosso arquivo será o -21-044.dsf.
Copie o arquivo referente à área escolhida para uma pasta. No X-Plane 10, esse arquivos estão compactados, renomeie o arquivo adicionando a extensão “.7z” e descompacte.

3º) Caso ainda não tenha, baixe o XP-Tools em http://developer.x-plane.com/tools/xptools/
Utilize o XGrinder para converter o DSF para txt. Além disso será criado o arquivo elevation.raw onde utilizaremos posteriormente.

4º) Na parte 1 do programa clique no botão “selecionar” e aponte para o arquivo dsf.txt
Preenchas as coordenadas conforme sua área selecionada. Você pode escrever as coordenadas das seguintes formas:

a) Decimal: -045.56324167
b) Graus, minutos e decimal de minutos: -033 30.15
c) graus, minutos e segundos: -045 30 02

Clique em gerar. Neste momento será criado um OBJ com a extensão “_area_select” que corresponde a nossa área de referência. Com esse objeto é possível ter uma ideia onde estamos editando já que no Sketchup inicialmente os objetos não terão texturas. É possível, por exemplo, aplicar uma textura nesse objeto, facilitando ainda mais nossa referência. Além, deste arquivo, serão criados um ou mais arquivos de texto com a extensão “_meshPatch_X.txt”, onde o “X” será o número do Patch que será utilizado posteriormente. Na estrutura do DSF são criados várias subestruturas chamadas PATCH, onde é definido a textura utilizada, tipo de superfície (ex. água), vegetação, etc. Nossa seleção de área, extrai a informação de Mesh dentro dos PATCH, então mesmo selecionando uma pequena área, teremos muitos polígonos um pouco distante mas que estão dentro do mesmo PATCH. Na área selecionada podemos ter vários PATCHs diferentes.
Veja a figura abaixo:

selecao_1

A área selecionada é o retângulo vermelho, ao utilizar o programa, será extraído os 8 triângulos azuis pois eles fazem parte do mesmo PATCH.

Nesta outra figura fora criados 4 arquivos pois a seleção abrange 4 PATCHS diferentes. Notem que alguns triângulos, mesmo não fazendo parte da seleção, foram extraídos pois fazem parte dos PATCHs selecionados.

selecao_2

5º) No X-Plane 10, a elevação do mesh está contido no arquivo Raster (elevation.raw), e com isso precisaremos corrigir esses dados. Caso não seja corrigido, ficarão assim:

mesh2skp_05

No X-Plane 9 não precisamos corrigir pois as informações de elevação já estão contidas no DSF. No campo 2 do programa, no primeiro campo, escolha o arquivo “_meshPatch_X.txt” e no segundo campo, escolha o arquivo elevation.raw. Por padrão, o X-Plane utiliza o tamanho 1201×1201 para este arquivo. Pode deixar estes valores.
Clique em gerar e então será criado uma cópia do arquivo DSF com a extensão “_fix.txt”.

6º) No campo 3, selecione o arquivo DSF com as elevações corrigidas (“_fix.txt”) e clique em gerar. Será criado um arquivo “.obj”.

7º) No Sketchup, importe o arquivo OBJ, faça as alterações necessárias, salve o projeto e exporte novamente como OBJ.
Caso não seja a área que estamos procurando, repita os passos 4,5 e 6 com os outros patchs. A cada patch importado para dentro do Sketchup, é uma boa prática agrupar ou separar por layers (camadas) facilitando assim a identificação de cada patch importado.
A explicação aqui foi bem resumida, mas este passo merece um capítulo a parte, isso fica para um próximo tutorial.

8º) Campo 4, selecione o arquivo “OBJ” para converter. Se necessário (e disponível) insira as coordenadas da textura do patch. Caso não saiba as coordenadas ou utiliza alguma textura customizada como DRAPED POLYGON, pode deixar os campos com “0.000000000”. Caso queira aplicar as texturas default, precisar das coordenadas. Utilizando duas coordenadas, pela diferença de longitude e diferença da posição da textura, é possível encontrar as coordenas a partir de um sistema linear.(no futuro implementarei isso de forma automática ;-D ) A forma manual é a seguinte:
No no patch extraído que será convertido em OBJ, verifique algumas linhas que começam com PATCH_VERTEX. Em seguida, teremos 7 campos. Na sequência: Longitude, Latitude, elevação, NormalX, NormalZ, Posição X da textura e Posição Y da textura. Procure as linhas que tenham os campos 6 e 7 com “0.000000000” ou “1.000000000”. No campo 6, se tiver “1.000000000” anote a longitude como “LON Esquerda”, “0.000000000” como “LON direita”. No campo 7, se tiver “1.000000000” anote a latitude como “LAT superior” e “0.000000000” como “LAT inferior”.

PATCH_VERTEX -43.802500572      -20.730833715       984.194792415       -0.000015259       -0.000015259       1.000000000     0.217242695
PATCH_VERTEX -43.801667048       -20.737500954      1002.648657406    -0.000015259       -0.000015259       0.000000000    0.157640955
PATCH_VERTEX -43.983334287       -20.485000381     10.000000000      -0.000015259       -0.000015259       0.222522316       0.000000000
PATCH_VERTEX -43.980833715       -20.479167620       12.000000000       -0.000015259       -0.000015259       0.056137942       1.000000000

 

9º) Clique em gerar. Será criado um arquivo de texto com as informação para serem inseridas no DSF.

10º) Como inserir o mesh editado no arquivo DSF:
No campo 1, com o mesmo DSF e coordenadas, marque a opção “Criar arquivo com patch deletado” e especifique o número do patch. Este número, é o “X” na extensão “_meshPatch_X.txt”
Ao clicar em “gerar”, será criado, além do mesmos patchs de antes, um arquivo com a extensão “_deletedLines.txt”.
Abra o “_meshPatch_X.txt” que você utilizou e copie a primeira linha. Ex “BEGIN_PATCH 8 0.000000 -1.000000 1 7”
Abra o arquivo “_deletedLines.txt” e localize a linha que você copiou. Após ela, cria uma nova linha para inserir informação.
Abra o arquivo txt (gerado a partir do OBJ), copie todo o texto, e cole na linha que você inseriu no “_deletedLines.txt”
Salve o arquivo e renomeie conforme DSF original.
Abra o XGrinder e jogue este arquivo dentro da janela. Será criado então, o arquivo com o mesh editado.
Pronto! Agora basta utilizar o mesh editado no seu cenário customizado ou até mesmo substituir o arquivo original do X-Plane.

 

Links para download:

download_iconVersão executável Windows: 3.98 Mb MeshRemexe_exe

download_iconScript em python: 8Kb MeshRemexe_pyw

Agradecimento, problemas, bugs, sugestões: Deixe um comentário.

 


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

17 pensamentos em “Edição de mesh no X-Plane

  • Bob

    Joz,
    Trying to flatten out a small piece of ground. I have been able to follow your guidance. Thank you. the process yielded 7 meshPatch fix.txt files which all converted to .obj files with no glitches. I opened the first in AC3D, saved it with a different file name and imported the other 6 files. The resultant file is just a collection of triangles with lots of spaces among them, nothing that would resemble what I was expecting to see, ie: the small piece of ground I wish to flatten. Is there a minimum size that I need to be working with? I would like to send particulars of exactly what I am doing directly vial email if that is possible. Please advise.
    Thanks again

    • Joz Autor do post

      Hi Bob, still needs improve the program. But I am slightly away from the simulation to a few months. I hope to return as soon as possible to improve this tool.
      The smallest possible area you select has to cover at least one vertex. There are areas with more or less detail. Maybe when you select an area you may have or not vertices. The advice is to select a larger area to get an idea with which you are working.
      And yet, if you try to re-enter with default mesh will get difference, because DSF accepts only integer meters altitudes while elevation_raw accepts a wider range of elevations. To fix this, you need to define the elevations of the outer vetex of your project with -32768.
      I hope not discourage you from it, the code is open to making changes and whenever possible I can answer your questions.

      Cheers

      • Bob

        Hi Joz, Thanks for the fast response. I understand. Just to add a bit more info, the area I am trying to edit is 360 x 513 meters and has plenty of vertices. I am not sure as to what you mean by assigning the outer vertex a value of -32768. Can you elaborate on that maybe? When you get time. What I am seeing are a field of triangles, some sharing common sides, some not, and space with nothing in between. I have changed to 2-sided to see if I was missing something and the spaces remain. so, any help and/or guidance would be welcomed, when you can.
        Thanks again.
        I am on the California coast, just as a note.

        • Joz Autor do post

          The vertices has 3 parameters, latitude, longitude and elevation. When you assign the -32768 meters to elevation, you are telling the x-plane to calculate the elevation based on elevation_raw file. Doing this there will be seamless between custom mesh and default mesh. So I suggested that the outermost vertices have -32768 elevation while you edit inside. But customized edition only accepts integers. For example, if you set vertices with 1.83 meters, in x-plane will be as 1.00. Unfortunately this is legacy of X-Plane 9.
          About lack of some triangles, it is due sketchup interpreter, who sometimes delete some edges or simply delete the polygon. To fix this, if you have this lack in the scenery will have to fill these spaces with new triangles in skechup.
          About a few disconnected polygons, i need improve the selection of vertices. The criteria currently is set by “patches”. Who can contain multiple disjointed polygons . The idea is to replace the extracted patch and everything should return to the place.
          Thanks for your feedback, but the program still needs be improved to become friendly.

    • Joz Autor do post

      Olá Walter, esta foi a primeira queixa sobre antivírus. Não tenho muito o que fazer pois utilizo o biblioteca py2exe para criar o executável.
      Para evitar qualquer problema, você pode baixar e executar o código em python.
      Outra opção seria adicionar uma exceção do antivírus para o programa.

  • Luiz Carlos Costa

    Olá Joz, Agradeço por seu interesse em passar informações que possam nos ajudar.
    Quando executo o Mesh Remexe ele cria apenas três arquivos com extensão: gap. obj e jpg. Ele não cria o box. SEgui os passos de seu tutorial arisca, mas não consigo descobrir porque isto ocorre. Poderia me dar uma ajuda?