修改。

This commit is contained in:
tengge1 2019-03-18 21:24:09 +08:00
parent 31063e4bf7
commit d68407120e
11 changed files with 63 additions and 11 deletions

View File

@ -26,6 +26,7 @@
<script src="assets/js/libs/jszip.min.js"></script>
<script src="assets/js/libs/inflate.min.js"></script>
<script src="assets/js/libs/gunzip.min.js"></script>
<script src="assets/js/libs/rbush.js"></script>
<script src="assets/js/SimplexNoise.js"></script>
<script src="assets/js/ImprovedNoise.js"></script>

View File

@ -169,7 +169,7 @@ ComponentMenu.prototype.onAddCloth = function () {
// ----------------------------- 地球 --------------------------------------
ComponentMenu.prototype.onAddEarth = function () {
var globe = new Globe();
var globe = new Globe(this.app);
this.app.editor.execute(new AddObjectCommand(globe));
};

View File

@ -3,8 +3,13 @@ import GlobeMaterial from './GlobeMaterial';
/**
* 地球
* @param {*} app
*/
function Globe() {
function Globe(app) {
var lon = 0;
var lat = 0;
var zoom = 1;
var geometry = new GlobeGeometry();
var material = new GlobeMaterial();

View File

@ -2,10 +2,26 @@
* 地球几何体
*/
function GlobeGeometry() {
THREE.PlaneBufferGeometry.call(this, 1, 1, 256, 256);
THREE.InstancedBufferGeometry.call(this);
this.maxInstancedCount = 4;
var geometry = new THREE.PlaneBufferGeometry(1, 1);
this.addAttribute('position', geometry.attributes.position);
this.addAttribute('normal', geometry.attributes.normal);
this.addAttribute('uv', geometry.attributes.uv);
var offsets = [];
for (var i = 0; i < 4; i++) {
offsets.push(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5);
}
this.addAttribute('offset', new THREE.InstancedBufferAttribute(new Float32Array(offsets), 3));
}
GlobeGeometry.prototype = Object.create(THREE.PlaneBufferGeometry.prototype);
GlobeGeometry.prototype = Object.create(THREE.InstancedBufferGeometry.prototype);
GlobeGeometry.prototype.constructor = GlobeGeometry;
export default GlobeGeometry;

View File

@ -5,13 +5,13 @@ import GlobeFragment from './shader/globe_fragment.glsl';
* 地球材质
*/
function GlobeMaterial() {
THREE.ShaderMaterial.call(this, {
THREE.RawShaderMaterial.call(this, {
vertexShader: GlobeVertex,
fragmentShader: GlobeFragment
});
}
GlobeMaterial.prototype = Object.create(THREE.ShaderMaterial.prototype);
GlobeMaterial.prototype = Object.create(THREE.RawShaderMaterial.prototype);
GlobeMaterial.prototype.constructor = GlobeMaterial;
export default GlobeMaterial;

View File

@ -0,0 +1,10 @@
import Layer from './Layer';
function BingLayer() {
Layer.call(this);
}
BingLayer.prototype = Object.create(Layer.prototype);
BingLayer.prototype.constructor = BingLayer;
export default BingLayer;

View File

@ -0,0 +1,11 @@
var ID = -1;
/**
*
*/
function Layer() {
this.id = `${this.constructor.name}${ID--}`;
this.name = `Layer`;
}
export default Layer;

View File

@ -1,3 +1,11 @@
uniform mat4 modelViewMatrix;
uniform mat4 projectionMatrix;
attribute vec3 position;
attribute vec3 normal;
attribute vec3 uv;
attribute vec3 offset;
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}

View File

@ -1,5 +0,0 @@
function TileGrid() {
}
export default TileGrid;

View File

@ -0,0 +1,5 @@
function Tiles() {
}
export default Tiles;

View File

@ -38,6 +38,7 @@
<script src="assets/js/libs/jszip.min.js"></script>
<script src="assets/js/libs/inflate.min.js"></script>
<script src="assets/js/libs/gunzip.min.js"></script>
<script src="assets/js/libs/rbush.js"></script>
<script src="assets/js/SimplexNoise.js"></script>
<script src="assets/js/ImprovedNoise.js"></script>