• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: unity  地形  

资源简介

放入工程就能用,里面一个js版本,一个是cs版本,用其中一个就行

资源截图

代码片段和文件信息

// Converted from Unityscript to C# at http://www.M2H.nl/files/js_to_c.php - by Mike Hergaarden
// Do test the code! You usually need to change a few small bits.

using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
using System;
using System.Text;

enum SaveFormat { Triangles Quads }
enum SaveResolution { Full Half Quarter Eighth Sixteenth }

public class ExportTerrain : EditorWindow
{

    SaveFormat saveFormat = SaveFormat.Triangles;
    SaveResolution saveResolution = SaveResolution.Half;
    static TerrainData terrain;
    static Vector3 terrainPos;

    int tCount;
    int counter;
    int totalCount;
    static ExportTerrain window;


    [MenuItem(“地形导出/OBJ格式“)]
    static void Init()
    {
        terrain = null;
        Terrain terrainobject = Selection.activeobject as Terrain;
        if (!terrainobject)
        {
            terrainobject = Terrain.activeTerrain;
        }
        if (terrainobject)
        {
            terrain = terrainobject.terrainData;
            terrainPos = terrainobject.transform.position;
        }

        
        window = (ExportTerrain)GetWindow(typeof(ExportTerrain) true “My Empty Window“);
        window.Show();
    }

    void OnGUI()
    {
        if (!terrain)
        {
            GUILayout.Label(“No terrain found“);
            if (GUILayout.Button(“Cancel“))
            {
                window.Close();
            }
            return;
        }
        saveFormat = (SaveFormat)EditorGUILayout.EnumPopup(“Export Format“ saveFormat);
        saveResolution = (SaveResolution)EditorGUILayout.EnumPopup(“Resolution“ saveResolution);

        if (GUILayout.Button(“导出“))
        {
            Export();
        }
    }

    void Export()
    {
        var fileName = EditorUtility.SaveFilePanel(“Export .obj file“ ““ “Terrain“ “obj“);
        int w = terrain.heightmapWidth;
        int h = terrain.heightmapHeight;
        var meshScale = terrain.size;
        var tRes = Mathf.Pow(2 (float)saveResolution);
        meshScale = new Vector3(meshScale.x / (w - 1) * tRes meshScale.y meshScale.z / (h - 1) * tRes);
        var uvScale = new Vector2(1.0f / (w - 1) 1.0f / (h - 1));
        var tData = terrain.GetHeights(0 0 w h);

        w = (int)((w - 1) / tRes + 1);
        h = (int)((h - 1) / tRes + 1);
        var tVertices = new Vector3[(int)w * (int)h];
        var tUV = new Vector2[(int)w * (int)h];
        int[] tPolys;
        if (saveFormat == SaveFormat.Triangles)
        {
            tPolys = new int[(w - 1) * (h - 1) * 6];
        }
        else
        {
            tPolys = new int[(w - 1) * (h - 1) * 4];
        }

        // Build vertices and UVs  
        for (int y = 0; y < h; y++)
        {
            for (int x = 0; x < w; x++)
            {
                tVertices[y * w + x] = Vector3.Scale(meshScalenew Vector3(x (tData[x * (int)tRes y * (int)t

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        7966  2017-10-18 18:50  ExportTerrain.cs
     文件        8321  2017-10-18 17:39  ExportTerrain.js

评论

共有 条评论