unity3d 通过代码建立曲面
using UnityEngine;
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.IO;
public class NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void Start () {
var stream = new FileStream("C:\\shuju2.data", FileMode.Open);
var reader = new StreamReader(stream);
var list1 = new List<String>();
var list2 = new List<String>();
while (!reader.EndOfStream)
{
var content = reader.ReadLine();
var result = content.Split(new Char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
list1.Add(result[0]);
list2.Add(result[1]);
}
int length = list1.Count;
double[] x = new double[length];
double[] y = new double[length];
double[] z = new double[length];
for (int i = 0; i < length; ++i)
{
x[i] = double.Parse(list1[i]);
y[i] = double.Parse(list2[i]);
z[i] = double.Parse(list2[i]);
}
reader.Close();
stream.Close();
double Pi = 3.1415926f;
double[] th = new double[100];
for (int i=0; i<100; ++i)
th[i] = i * 2 * Pi / 100;
double [,] R = new double[100, length];
double [,] TH = new double[100, length];
double [,] X = new double[100, length];
double [,] Y = new double[100, length];
double [,] Z = new double[100, length];
for(int i=0;i<100;++i)
for(int j=0;j<length;++j)
R[i,j]=x[j];
for(int i=0;i<100;++i)
for(int j=0;j<length;++j)
TH[i,j]=th[i];
for(int i=0;i<100;++i)
{
for(int j=0;j<length;++j)
{
X[i,j]=R[i,j]*System.Math.Cos(TH[i,j]);
Y[i,j]=R[i,j]*System.Math.Sin(TH[i,j]);
}
}
for(int i=0;i<100;++i)
for(int j=0;j<length;++j)
Z[i,j]=z[j];
double max = 0;
for(int i=0;i<length;++i)
{
for(int j=0;j<100;++j)
{
if(Z[j,i]>max)
max=Z[j,i];
}
}
Vector3[] vertices = new Vector3[length*100];
for (int i=0; i<100; ++i)
{
for(int j=0;j<length;++j)
{
vertices[i*length+j].Set((float)X[i,j],(float)Y[i,j],(float)Z[i,j]);
}
}
int [] triangles = new int[101*length*2*6];
int triangles_count =0;
for (int i=0; i<100; ++i)
{
for (int j=0; j<length-1; ++j)
{
if(i==99)
{
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=i*length+j+1;
triangles[triangles_count++]=j+1;
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=j+1;
triangles[triangles_count++]=j;
}
else
{
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=i*length+j+1;
triangles[triangles_count++]=i*length+j+1+length;
triangles[triangles_count++]=i*length+j;
triangles[triangles_count++]=i*length+j+length+1;
triangles[triangles_count++]=i*length+j+length;
}
}
}
gameObject.AddComponent<MeshFilter>();
gameObject.AddComponent<MeshRenderer>();
Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.vertices = vertices;
mesh.triangles = triangles;
gameObject.renderer.material.color = new Color(1.0f,0.0f,0.0f,0.5f);
GetComponent<MeshRenderer>().material.shader = Shader.Find("Transparent/Diffuse");
//CreateCube ();
}
// Update is called once per frame
void Update () {
}
void CreateCube()
{
gameObject.AddComponent<MeshFilter>();
gameObject.AddComponent<MeshRenderer>();
Vector3[] vertices = new Vector3[3];
int [] triangles = new int[3];
vertices [0].Set (0, 0, 0);
vertices [1].Set (0, 1, 0);
vertices [2].Set (0, 0, 1);
triangles [0] = 0;
triangles [1] = 1;
triangles [2] = 2;
Mesh mesh = GetComponent<MeshFilter>().mesh;
mesh.vertices = vertices;
mesh.triangles = triangles;
}
}
测试数据 shuju2.data
1.62529962517393e-001 5.03736912948521e-002
3.32069364646237e-001 6.05343235585258e-002
5.17768012863151e-001 8.10546107796976e-002
6.79262708210035e-001 1.11986927351479e-001
8.56916649644989e-001 1.53278898880759e-001
1.08296453031517e+000 1.63366206994076e-001
1.30096770420339e+000 1.94225199415502e-001
1.47864957864801e+000 2.56278380374267e-001
1.71281199862430e+000 2.97497027753191e-001
1.90666708566181e+000 3.80290468384198e-001
2.04397179464350e+000 4.32015419021332e-001
2.22971234237490e+000 4.83677520386733e-001
2.41546685661113e+000 5.45720226466876e-001
2.61736665043061e+000 6.07741982789774e-001
2.79504852487522e+000 6.69795163748540e-001
2.94043984015335e+000 7.31890244221795e-001
3.15046813978376e+000 8.35423944525043e-001
3.32013324045608e+000 9.39010019221402e-001
3.50590172119714e+000 1.01143333001629e+000
3.66745228256334e+000 1.08388806544704e+000
3.81284359784148e+000 1.14598314592030e+000
3.97436622619802e+000 1.19767667192156e+000
4.09552565559647e+000 1.24942257231594e+000
4.21674095101423e+000 1.34269089156929e+000
4.33792831342234e+000 1.41519800139316e+000
4.45109890205814e+000 1.52923800495462e+000
4.57231419747590e+000 1.62250632420797e+000
4.70971667199140e+000 1.74689550784830e+000
4.78248216215461e+000 1.82984607165864e+000
4.86336219162394e+000 1.94392797473459e+000
4.97658864627906e+000 2.09949039715502e+000
5.04133736266998e+000 2.22397385470296e+000
5.10605814605123e+000 2.32769610282141e+000
5.18693817552056e+000 2.44177800589736e+000
5.21948013177397e+000 2.62858699124824e+000
5.30037412774813e+000 2.75304949903893e+000
5.34904739707995e+000 2.92945692991782e+000
5.39777653243110e+000 3.14738677965569e+000
5.41422907512059e+000 3.37573913362279e+000
5.41446650570270e+000 3.55220941377342e+000
5.39860055621605e+000 3.75984245782552e+000
5.39072344749205e+000 3.90518139871054e+000
5.32630992721705e+000 4.02983245431644e+000
5.15693812314616e+000 4.14423907862968e+000
4.97947971277883e+000 4.24827557310680e+000
4.81006600919345e+000 4.33154038327581e+000
4.57604325426546e+000 4.39412778304431e+000
4.36616858618817e+000 4.40478073460324e+000
4.12400335894441e+000 4.41547558567665e+000
3.93830471072750e+000 4.39495529845548e+000
3.73641888341286e+000 4.34331414684732e+000
3.52648834931625e+000 4.31244467954728e+000
3.35687911466326e+000 4.25038102370989e+000
3.17111063392220e+000 4.17795771291500e+000
2.99341479297275e+000 4.10552392724149e+000
2.84803744419945e+000 4.05380945148298e+000
2.70257629639717e+000 3.93981134743601e+000
2.56524365440582e+000 3.86732518736939e+000
2.42791101241448e+000 3.79483902730277e+000
2.31475439028350e+000 3.69117962845606e+000
2.20165363417185e+000 3.62904264846831e+000
2.12084343722667e+000 3.56686376896608e+000
2.04000530727184e+000 3.48392368003436e+000
1.95919511032666e+000 3.42174480053212e+000
1.86225360030307e+000 3.36996747550188e+000
1.79757471643631e+000 3.29738704152766e+000
1.68448792682948e+000 3.24563066625465e+000
1.61976714344823e+000 3.14190841813621e+000
1.55508825958146e+000 3.06932798416198e+000
1.48232276941824e+000 2.98637742035164e+000
1.39338406666213e+000 2.88268659686906e+000
1.28025537754081e+000 2.79978840745183e+000
1.21553459415956e+000 2.69606615933338e+000
1.13465456469023e+000 2.58198425625743e+000
1.06993378130898e+000 2.47826200813898e+000
1.00524093093738e+000 2.39530096945002e+000
9.24360901468054e-001 2.28121906637407e+000
8.67656891859099e-001 2.13596392451802e+000
7.70645549311364e-001 2.03228357591406e+000
6.81637014031100e-001 1.87668972885777e+000
6.16902264145014e-001 1.76258687602457e+000
5.36022234675689e-001 1.64850497294863e+000
4.46943866871276e-001 1.44100810231861e+000
3.17488333603934e-001 1.22318300136697e+000
1.47488036815707e-001 8.70462413516783e-001
unity3d 通过代码建立曲面的更多相关文章
- Unity3d 使用DX11的曲面细分
Unity3d surface Shaderswith DX11 Tessellation Unity3d surface shader 在DX11上的曲面细分 I write this articl ...
- Spine输出资源一键入Unity3D工具代码
之前预研过2D骨骼动画编辑工具SPINE,感觉其比cocosStudio及Unity3D自带的骨骼动画编辑器(原生Sprite Tree或Uni2D)要更适合有3DSMax习惯的美术,即Spine更容 ...
- 【跟我一起学Unity3D】代码中分割图片而且载入帧序列动画
在Cocos2dx中.对大图的处理已经封装好了一套自己的API,可是在Unity3D中貌似没有类似的API(好吧,实际上是有的,并且功能更强大),或者说我没找到. 只是这也在情理之中,毕竟Unity3 ...
- Unity3D常用代码总结
1 GUI汇总 function OnGUI() { GUI.Label(Rect(1,1,100,20),"I'm a Label"); //1 GUI.Box(Rect(1,2 ...
- python一句代码建立树
from collections import defaultdict def tree(): return defaultdict(tree) 上面的代码不难理解,就是利用递归的方式,创建了一个树的 ...
- kbengine Unity3d demo 代码执行流程(4)
当服务端成功启动,客户端链接服务端后进入demo中的游戏界面,demo中的功能包括注册.登录.角色管理.战斗.场景等等. 对于新接触kbengine的人,看见客户端的代码后会觉得很迷茫,有些无从下手. ...
- Unity3D常用代码集合
1.基本碰撞检测代码 function OnCollisionEnter(theCollision : Collision){ if(theCollision.gameObject.n ...
- unity3d优化-代码篇(不定期更新)
1.Update 大多数情况是需要在update中处理很多逻辑的,然而unity3d底层是c/c++编写,逻辑层是c#,通过monobehaviour挂载于对象中,实现一些unity3d接口的重载. ...
- Unity3d 常用代码
//创建一个名为"Player"的游戏物体 //并给他添加刚体和立方体碰撞器. player=new GameObject("Player"); player. ...
随机推荐
- sqler sql 转rest api 防止sql 注入
sqler 对于sql Sanitization 的处理,我们可以使用bind 指令 说明: 这个是2.0 的功能,注意版本的使用 参考格式 addpost { // $input is a ...
- Match 3 小项目学习
using UnityEngine; using System.Collections; using Holoville.HOTween; /// <summary> /// 游戏逻辑 / ...
- 时间标准基础知识UTC和ISO8601
过去世界各地原本各自订定当地时间,但随着交通和电讯的发达,各地交流日益频繁,不同的地方时间,造成许多困扰,于是在西元1884年的国际会议上制定了全球性的标准时,明定以英国伦敦格林威治这个地方为零度经线 ...
- COLUMN_FORMAT 的值:FIXED、DYNAMIC、DEFAULT 的区别(待补充)
参考===MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_ ...
- css中权重与继承
出处:http://blog.csdn.net/xf616510229/article/details/53613212
- ELK-head
Head从elastic5开始只是支持单独服务器,不能够在通过 elasticsearch/bin/plugin -install mobz/elasticsearch-head 这样简单的方式安装插 ...
- Golang cpu的使用设置--GOMAXPROCS
以下测试,使用的Go版本是1.8.3 不设置 如果没有调用runtime.GOMAXPROCS 去设置CPU,Golang默认使用所有的cpu核. 测试机器CPU有4个核,测试代码开启4个gorout ...
- newifi mini将led指示灯引出当gpio使用
之前买了个newifi mini的路由器,CPU是mt7620a的,有7个led指示灯.现在想要把控制led灯的gpio引出来,方便其他驱动或应用的开发. 一.硬件部分 1.联想路由 现在想要把USB ...
- msp430学习笔记-DAC12
MSP430F169 的DAC12 模块有2 个DAC 通道,并且可以用DAC12GRP控制位将多个DAC12通道组合起来,实现同步更新,硬件还能确保同步更新独立于任何中断或者NMI事件. DAC12 ...
- Windows Phone 常用资源
统计分析: 1. 友盟 http://www.umeng.com SDK: http://www.nuget.org/packages/UmengAnalytics/ 集成文档: http://dev ...