Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
This question was closed Jan 03, 2018 at 05:45 PM by Cosmoraph for the following reason:

Resolved.

avatar image
0
Question by Cosmoraph · Jan 03, 2018 at 05:05 PM · c#terrainheightmapterraindata

How to export Heightmap(Terrain) Raw.(Script)

alt text

     public byte[] ToByteArray(float[,] nmbs)
     {
         byte[] nmbsBytes = new byte[nmbs.GetLength(0) * nmbs.GetLength(1) * 4];
         int k = 0;
         for (int i = 0; i < nmbs.GetLength(0); i++)
         {
             for (int j = 0; j < nmbs.GetLength(1); j++)
             {
                 byte[] array = System.BitConverter.GetBytes(nmbs[i, j]);
                 for (int m = 0; m < array.Length; m++)
                 {
                     nmbsBytes[k++] = array[m];
                 }
             }
         }
         return nmbsBytes;
     }
 
     public float[,] ImportRaw(string path)
     {
         //reading file
         System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
         System.IO.FileStream stream = fileInfo.Open(System.IO.FileMode.Open, System.IO.FileAccess.Read);
 
         int size = (int)Mathf.Sqrt(stream.Length / 2);
         byte[] vals = new byte[size * size * 2];
         float[,] rawHeights = new float[size, size];
 
         stream.Read(vals, 0, vals.Length);
         stream.Close();
 
         //setting matrix
         Rect rect = new Rect(0, 0, size, size);
         int i = 0;
         for (int z = size - 1; z >= 0; z--)
             for (int x = 0; x < size; x++)
             {
                 rawHeights[x,z] = (vals[i + 1] * 256f + vals[i]) / 65535f;
                 i += 2;
             }
         return rawHeights;
     }
 
     public void ExportTerrainData(string path)
     {
         if (path != null && path.Length != 0)
         {
             path = path.Replace(Application.dataPath, "Assets");
 
             Terrain terrain = GetComponent<Terrain>();
             TerrainData data = terrain.terrainData;
 
             int h = data.heightmapHeight;
             int w = data.heightmapWidth;
             
             float[,] rawHeights = data.GetHeights(0, 0, w, h);
 
             //reading file
             System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
             System.IO.FileStream stream = fileInfo.Create();
             
             byte[] bytes = ToByteArray(rawHeights);
             stream.Write(bytes, 0, bytes.Length);
             stream.Close();
         }
     }

How to export Heightmap(Terrain) Raw.

I can easily export / import the HeightMap through the editor GUI buttons supported by unity.

What I want to do is to automate export / import of HeightMap to black and white raw files on 16bit channel.

When I scripted them, Import works fine. But the export is not working well.

Plz, help me.

20180104-011123-1.png (92.3 kB)
Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image keromonkey · Apr 14, 2019 at 07:30 AM 0
Share

Your solution for export works (as I'm guessing you know since you closed it the same day you opened it). But for others who come here...

If you use his export code, note that one float number is stored across 4 bytes. His export code writes those 4 bytes (for each value) to the bytes array before saving and closing it.

If you have a terrain that is 512-513, and you export it - it seems to end up around 1$$anonymous$$B of raw data.

When importing it, you have to reverse the process, and translate those 4 bytes at a time into a single floating point value. Store that in your height map, and jump ahead to the next 4 bytes.

To the OP, thanks for asking the question.

0 Replies

  • Sort: 

Follow this Question

Answers Answers and Comments

481 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to detect surrounding terrain height for minimap (comparable to a sonar) 0 Answers

Terrain get sample height gives slightly wrong results,Terrain sampleheight gives SLIGHTLY wrong answer 1 Answer

Rendering a contour map from Marching Squares 1 Answer

Change Terrain Heightmap Resolution without Resizing Terrain 1 Answer

how to set the SetAlphamaps to one certain texture? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges