loading curves from blender - saving to API again - point materials - awesome SHITgit diffgit diff!

beta.r3js.org
Theunis J. Botha 2016-11-22 19:20:25 +01:00
parent 481cd05374
commit b03cff08a6
5 changed files with 114 additions and 5 deletions

View File

@ -540,7 +540,7 @@ GameLib.D3.Material.prototype.createInstance = function(update) {
if (
(!instance) ||
(instance && instance.materialType != this.materialType)
(instance && instance.type != this.materialType)
) {
if (this.materialType == GameLib.D3.Material.MATERIAL_TYPE_STANDARD) {
@ -653,12 +653,67 @@ GameLib.D3.Material.prototype.createInstance = function(update) {
morphTargets: this.morphTargets,
morphNormals: this.morphNormals
});
} else if (this.materialType == GameLib.D3.Material.MATERIAL_TYPE_POINTS) {
instance = new this.graphics.instance.PointsMaterial({
name: this.name,
opacity: this.opacity,
transparent: this.transparent,
blending: this.blending,
blendSrc: this.blendSrc,
blendDst: this.blendDst,
blendEquation: this.blendEquation,
depthTest: this.depthTest,
depthFunc: this.depthFunc,
depthWrite: this.depthWrite,
polygonOffset: this.polygonOffset,
polygonOffsetFactor: this.polygonOffsetFactor,
polygonOffsetUnits: this.polygonOffsetUnits,
alphaTest: this.alphaTest,
clippingPlanes: this.clippingPlanes,
clipShadows: this.clipShadows,
overdraw: this.overdraw,
visible: this.visible,
side: this.side,
color: new this.graphics.instance.Color(
this.color.r,
this.color.g,
this.color.b
),
size: this.pointSize,
sizeAttenuation: this.pointSizeAttenuation,
vertexColors: GameLib.D3.Material.TYPE_NO_COLORS,
fog: this.fog
});
} else {
console.log("material type is not implemented yet: " + this.materialType + " - material indexes could be screwed up");
}
}
if (update) {
for (var property in instance) {
if (property == 'size') {
instance[property] = this.pointSize;
}
if (property == 'sizeAttenuation') {
instance[property] = this.pointSizeAttenuation;
}
if (
this.hasOwnProperty(property) &&
instance.hasOwnProperty(property)
) {
instance[property] = this[property];
}
}
instance.needsUpdate = true;
}
return instance;
};

View File

@ -157,8 +157,9 @@ GameLib.D3.Mesh.API = function(
* Mesh Type
* @type {number}
*/
GameLib.D3.Mesh.TYPE_NORMAL = 0;
GameLib.D3.Mesh.TYPE_SKINNED = 1;
GameLib.D3.Mesh.TYPE_NORMAL = 0;
GameLib.D3.Mesh.TYPE_SKINNED = 1;
GameLib.D3.Mesh.TYPE_CURVE = 2;
/**
* Creates a mesh instance or updates it
@ -299,6 +300,10 @@ GameLib.D3.Mesh.prototype.createInstance = function(update) {
instance = new this.graphics.instance.Mesh(instanceGeometry, instanceMaterial);
}
if (this.meshType == GameLib.D3.Mesh.TYPE_CURVE) {
instance = new this.graphics.instance.Points(instanceGeometry, instanceMaterial);
}
if (this.meshType == GameLib.D3.Mesh.TYPE_SKINNED) {
var bones = this.skeleton.bones;

View File

@ -374,6 +374,7 @@ GameLib.D3.Scene.LoadScene = function(
gameLibTextureMap[map].texture = new GameLib.D3.Texture(
new GameLib.D3.Texture.API(
apiTexture.id,
map,
apiTexture.name,
uploadUrl + '/' + apiTexture.imagePath,
apiTexture.wrapS,

View File

@ -42,4 +42,32 @@ GameLib.D3.TextureMaps = function TextureMaps(
this.normal = normal;
this.roughness = roughness;
this.specular = specular;
};
GameLib.D3.TextureMaps.API = function TextureMaps(
alpha,
ao,
bump,
diffuse,
displacement,
emissive,
environment,
light,
metalness,
normal,
roughness,
specular
) {
this[GameLib.D3.Texture.TEXTURE_TYPE_ALPHA] == alpha;
this[GameLib.D3.Texture.TEXTURE_TYPE_AO] == ao;
this[GameLib.D3.Texture.TEXTURE_TYPE_BUMP] == bump;
this[GameLib.D3.Texture.TEXTURE_TYPE_DIFFUSE] == diffuse;
this[GameLib.D3.Texture.TEXTURE_TYPE_DISPLACEMENT] == displacement;
this[GameLib.D3.Texture.TEXTURE_TYPE_EMISSIVE] == emissive;
this[GameLib.D3.Texture.TEXTURE_TYPE_ENVIRONMENT] == environment;
this[GameLib.D3.Texture.TEXTURE_TYPE_LIGHT] == light;
this[GameLib.D3.Texture.TEXTURE_TYPE_METALNESS] == metalness;
this[GameLib.D3.Texture.TEXTURE_TYPE_NORMAL] == normal;
this[GameLib.D3.Texture.TEXTURE_TYPE_ROUGHNESS] == roughness;
this[GameLib.D3.Texture.TEXTURE_TYPE_SPECULAR] == specular;
};

View File

@ -54,6 +54,7 @@ GameLib.D3.Texture.prototype.loadTexture = function(imageFactory) {
/**
* Raw Texture API object - should always correspond with the Texture Schema
* @param id
* @param typeId
* @param name
* @param imagePath
* @param wrapS
@ -77,6 +78,7 @@ GameLib.D3.Texture.prototype.loadTexture = function(imageFactory) {
*/
GameLib.D3.Texture.API = function(
id,
typeId,
name,
imagePath,
wrapS,
@ -102,13 +104,18 @@ GameLib.D3.Texture.API = function(
}
this.id = id;
if (GameLib.D3.Utils.UndefinedOrNull(typeId)) {
typeId = GameLib.D3.Texture.TEXTURE_TYPE_DIFFUSE;
}
this.typeId = typeId;
if (GameLib.D3.Utils.UndefinedOrNull(name)) {
name = 'Texture (' + image.name + ')';
name = 'Texture (' + typeId + ')';
}
this.name = name;
if (GameLib.D3.Utils.UndefinedOrNull(imagePath)) {
throw new Error('Cannot create textures with no image path set');
imagePath = null;
}
this.imagePath = imagePath;
@ -268,6 +275,19 @@ GameLib.D3.Texture.TYPE_RGBM7_ENCODING = 3004;
GameLib.D3.Texture.TYPE_RGBM16_ENCODING = 3005;
GameLib.D3.Texture.TYPE_RGBD_ENCODING = 3006; // MAXRANGE IS 256.
GameLib.D3.Texture.TEXTURE_TYPE_ALPHA = 'alpha';
GameLib.D3.Texture.TEXTURE_TYPE_AO = 'ao';
GameLib.D3.Texture.TEXTURE_TYPE_BUMP = 'bump';
GameLib.D3.Texture.TEXTURE_TYPE_DIFFUSE = 'diffuse';
GameLib.D3.Texture.TEXTURE_TYPE_DISPLACEMENT = 'displacement';
GameLib.D3.Texture.TEXTURE_TYPE_EMISSIVE = 'emissive';
GameLib.D3.Texture.TEXTURE_TYPE_ENVIRONMENT = 'environment';
GameLib.D3.Texture.TEXTURE_TYPE_LIGHT = 'light';
GameLib.D3.Texture.TEXTURE_TYPE_METALNESS = 'metalness';
GameLib.D3.Texture.TEXTURE_TYPE_NORMAL = 'normal';
GameLib.D3.Texture.TEXTURE_TYPE_ROUGHNESS = 'roughness';
GameLib.D3.Texture.TEXTURE_TYPE_SPECULAR = 'specular';
/**
* Creates an instance of our texture object
* @returns {GameLib.D3.Texture|THREE.SoftwareRenderer.Texture|THREE.Texture|*|Texture}