怎样可以做出星空

JavaScript017

怎样可以做出星空,第1张

大部分的宇宙团以深色作为基底,在深色基底上喷绘浅色则可以最大限度的体现出喷笔的过度效果。

在前景部分薄喷一点浅色,提亮,形成整体的立体过渡效果。

主体部分喷薄喷黄色提亮。

这样就可以形成一个有远景、中景(主题)、前景的过渡效果。所有的层次感就依据这三个区域进行完成

现在说说一直在说的“可控性”问题,可控性≠随机的状态,需要你能看得见摸得着,以外用棉絮裹在模型表面的喷涂方法由于棉絮过于纷乱,因此是无法进行“棉絮”的调整的所以“裹棉絮”就是一种典型的“随机”操作了。

这个例子里产生纹理的方式是用一块撕开的毛毡,边缘呈现不规则形状(随机性)。但是,由于是一块毛毡,因此可以方便的手持、调整角度,因此随机性就有了一定的可控性。

利用毛毡的边沿进行遮盖喷色,利用这种方式就可以尽量的控制随机性了。选择毛毡上适当的边缘形状,结合已经喷好的部分进行遮盖渐渐的前景云的轮廓就可以喷出。

现在我们可以看到的是前景上在打草稿的时候刻意提亮的区域在浅色的燃料所表现的过度效果下就更亮了。而这种星云的效果也更接近于真实星云的层次效果。在这一步其实已经是用棉絮难以达到的层次感了。

继续喷涂远景层次,用的漆量比前景稍薄。

主体部分继续以毛毡的边缘喷出云层的效果,这时一片充满星云并有层次感的天空就表现出来了。

但是这样依旧缺乏细节。继续加细节内容。

主体区域很薄的喷一层橙色,这层橙色是为了营造出星球的光线照耀的效果,规划的星球区域浓一些,远处淡一点。

用这种方法我们就会发现“一部分云层被照亮了”

用白色油漆继续点缀主体部分高光。

继续橙色覆盖

反复多次就可以做出主体星云的效果

用白色油漆厚喷星球的位置。这时可以用牙刷沾上一点白漆弹一下形成群星效果。

洞板扣在星球的位置上。

透过洞板为星球着色。

星球的下部加一点深色阴影。上半部分加一些浅色提亮。

这样一颗星球就喷出来了,但我们现在依旧可以看到这颗星球比较突兀,和背景的分离感太强。

怎么办?

在去除了洞板后在星球的上部再喷一层提亮着色。如果白色过于不和谐的话,那么就再喷一点点橙色。

这时,有层次感的星空也就做出来了。

电脑画图怎么画星空:1,板绘准备电脑数位板 手绘准备颜料纸笔。首先新建一张画布,铺上夜空的底色,一般是深蓝色。选择好笔刷大小和浓淡。如果有天空笔刷就用,没有用【笔】也可,浓度设为5-10%。2,将天顶和近处的景物(如山丘房屋之类的)。铺成更深的颜色,以显示星空的立体感。3,简单画出山体的反光,暖色一般是灯光,冷色是星月的光辉。再画一条银河带,银河带是星星密集的一条区域。所以是较亮的。4,星星之间交相辉映,形成色彩斑斓的星云,所以银河带的颜色不仅仅是蓝色,用浓度较淡的笔触进行涂抹,适当加入暖色丰富画面。最亮的地方是银河带中间暗部周边区域。5,用【铅笔】等笔刷点上星星,注意星星的层次,需要有大有小,有明有暗。如果嫌麻烦可以自制一个星星笔刷。周边加上较淡的星云。6,细化星星。可以画上少许闪光。山体擦去草稿痕迹,将反光的细节完善好,再加上阴影。完成。我画的星云还不够绚烂,还可以再提亮一些。

场景中的三要素

camera 相机

spotLight 光源

object (plane、cube...)物体

一个只有一个平面的简单场景中已经包含了几个对象

其中包括使用 Scene.add(object) 加载进场景的几个对象

场景渲染的时候camera对象会自动添加进来

从几个函数来理解THREE.Scene()对象

1、在场景中添加物体 Scene.Add()

2、移除物体 Scene.Remove()

3、获取场景中所有子对象列表 Scene.children

4、利用name 属性,获取场景中某个特定的物体 Scene.getChildByName()

5、这是一个回调函数返回所有子对象列表 scene.traverse()

在这里的效果同使用for 循环遍历children这个属性

6、雾化属性 在添加完场景后即可添加,可以使整个场景有一种雾化的效果

scene.fog = new THREE.Fog(0xffffff,0.015,100)

7、使场景中的所有物体都使用相同的材质

scene.overrideMaterial = new THREE.MeshLambertMaterial({color:0xffffff})

var geom = new THREE.Geometry()

geom.vertices = vertices vertices数组定义了构成几何体的点;

geom.faces = faces 将vertices里面的点连接起来,创建成三角面片,就形成了faces数组;

geom.verticesNeedUpdate = true 告诉geom对象 上面的属性需要更新;

geom.computeCentroids() 计算geom中face数组里每一个面的重心;

geom.computeFaceNormals() 该函数用来重新计算侧面,从而完成整个模型的更新

geom.mergeVertices() 从字面上的意思可以理解为将几何体的面融成一个立体;

geom.clone() 创建出一个geom对象的副本,赋予不同的材质后,就可以使用这个副本创建不同的网格对象。

mesh.position

mesh.rotation

mesh.scale

mesh.translateX

mesh.translateY

mesh.translateZ

cube.position.set(10,3,1)

cube.position = new THREE.Vector3(10,3,1)

1、在controls 中添加方法变量

属性变量是这样的: this.positionX = 1

方法变量:

2、把对象传递给gui (无取值范围)

gui.add(controls,'translate')

这样在gui中点击的时候就可以调用 translate 方法

var mesh = THREE.SceneUtils.createMultiMaterialObject(geom,materials)//其中materials是设置材料的对象数组

这个方法创建出来的不是一个THREE.Mesh实例,而是materials数组里面的每一个材质都会创建一个实例 所以要像使用Scene对象一样使用这个(THREE.Mesh)