所有分类
  • 所有分类
  • 后端开发
画出地球模型,轻松绘制逼真3D地球

画出地球模型,轻松绘制逼真3D地球

现在,我先创建一个空白的LBitmapData对象,然后将这个对象分割成N个小三角形,具体做法看下面代码如果要改变这个地球的大小的话,就更简单了,改变LSprite对象的scaleX和scaleY属性就可以改变它的大小了,大家可以点击下面的

绘制平面

要让地球转动得起来,首先咋弄?当然是画出一个地球模型。接着将它切分为小三角形,这样每一片都像是地球的零件了。最后再给这个新装扮一下,一个活灵活现的地球就在你眼前呈现出来!

画出地球模型,轻松绘制逼真3D地球

咱们要动笔画画先准备个空荡荡的LBitmapData作为绘画用具。然后,把大图像分割成一个个正方体小块,这样就能看到它们各自长得怎么样~

试试这个小程序Drawtriangles,超容易上手,很快就能做出”平面效果“!平时出门办个事也很实用!

earthBitmapData = new LBitmapData("#ffffff", 0, 0, 500, 300);
var i, j;
vertices = new Array();
for(i=0;i<=cols;i++){
	for(j=0;j<=rows;j++){
		vertices.push(i*15,j*15);
	}
}
indices = new Array();
for (i = 0; i < cols; i++) {
	for (j = 0; j < rows; j++) {
		indices.push(i * (rows + 1) + j, (i + 1) * (rows + 1) + j, i * (rows + 1) + j + 1);
		indices.push((i + 1) * (rows + 1) + j, i * (rows + 1) + j + 1, (i + 1) * (rows + 1) + j + 1);
	}
}
uvtData = new Array();
for (i = 0; i <= cols; i++) {
	for (j = 0; j <= rows; j++) {
		uvtData.push(i / cols, j / rows);
	}
}

计算y坐标

要把平面变成圆?那可得把每个小三角形摆好哦~首先,弄清楚Y轴挺重要的!利用三角函数计算,咱们就能知道小三角形上下两头的高Y跟圆形正前面的半径r1。

backLayer = new LSprite();
addChild(backLayer);
backLayer.graphics.clear();
backLayer.graphics.beginBitmapFill(earthBitmapData);
backLayer.graphics.drawTriangles(vertices, indices, uvtData, 2);

记住了y值以后,直接扔进 vertices 里面去,每个小三角在哪儿就搞定!下面就是看它表现的时候了。

画出地球模型,轻松绘制逼真3D地球

计算x坐标

画出地球模型,轻松绘制逼真3D地球

来,我们先搞定X轴。找个半径为r1的圆当切面就行,然后用三角函数算出这三角形在这个平面上的X坐标。

只是加个X还不够,得把Y也搞定,这样才能全都放进去喔~

var a = Math.sin(angle);
if((90-180*j/rows)%90==0 && (90-180*j/rows)0!=0)a=(90-180*j/rows)>0?1:-1;
var y =  -r*a;
var sa = Math.cos(angle);
var r1 =  Math.abs(r*sa);

按照下面这几个简单的步骤走,你很快就能看到超级逼真的3D地球了哟~别忘了按顺序操作!

绘制地球

for(i=0;i<=cols;i++){
	for(j=0;j0?1:-1;
		if((90-180*j/rows)0==0)a=0;
		var sy =  -r*a;
		vertices.push(i*15,sy);
	}
}

行,动手做,让我们弄个能换地图的编程小项目。然后跑起来,瞧,一颗真实的地球就在你眼前呈现出来

画出地球模型,轻松绘制逼真3D地球

你知道吗?只要简单调整下LSPrite的scaleX和scaleY,就能随意改变地球大小!设计师们也可以随心所欲发挥想象力,创作出各种各样的炫酷模型!

旋转地球

画出地球模型,轻松绘制逼真3D地球

想让地球转快点不?你们没学过drawtriangles里那个叫uvtData啥的玩意儿能调图的位置?那就试试换换那些数字,看看会咋样!说不定地球真的能飞起来哩!

这不是换个地方吗?每一排的数字小三角往下挪一格就行了。这么一搞,画面都漂亮多了!是不是感觉像地球在转动?

var b = Math.cos(angle*Math.PI/180);
var x =  r1*b;

来,咱们来点几下屏幕,让地球动起来呗!是不是很酷?而且还是立体的,保证你看得爱不释手~

调整大小与测试

for(i=0;i<=cols;i++){
	for(j=0;j<=rows;j++){
		var sa = Math.cos(angle);
		if((90-180*j/rows)0==0)sa=1;
		var sr =  Math.abs(r*sa);
		var angle2 = 360*(i+1)/cols;
		var b = Math.cos(angle2*Math.PI/180);
		if(angle2%360==0)b=1;
		else if(angle20==0)b=-1;
		var sx =  sr*b;
		vertices.push(sx,j*15);
	}
}

想让地球变大变小,太简单了!只需动一动LSprite里面的scaleX和scaleY,立马就可以搞定。这样,你想怎么调整都可以,而且保证不走形哦~

哥们儿,快来看看这个!要玩 preach 功能是不是?那你得用咱们 HTML5 的开源引擎 LufyLegend 1.5.1版本以上!感兴趣吗?别犹豫赶紧去官网搞个最新版试哈子!

画出地球模型,轻松绘制逼真3D地球

原文链接:https://www.icz.com/technicalinformation/web/vue2/2024/04/14971.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?