123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- window.prepareFur = function() {
- var shells = 30;
-
- var materials = [];
- var meshes = [];
-
- var diffuseTexture = new BABYLON.Texture("textures/leopard_fur.jpg", scene);
- var heightTexture = new BABYLON.Texture("textures/speckles.jpg", scene);
- var furTexture = BABYLON.FurMaterial.GenerateTexture("furTexture", scene);
-
- var fur = new BABYLON.FurMaterial("fur0", scene);
- fur.furLength = 4;
- fur.furAngle = 0;
- fur.furColor = new BABYLON.Color3(0.2, 0.2, 0.2);
- fur.diffuseTexture = diffuseTexture;
- fur.furOffset = 0;
- fur.furTexture = furTexture;
-
- var setValue = function(property, value) {
- for (var i=0; i < materials.length; i++) {
- materials[i][property] = value;
- }
- }
-
- var resetFur = function() {
- for (var i=1; i < materials.length; i++) {
- materials[i].dispose();
- }
- for (var i=1; i < meshes.length; i++) {
- meshes[i].dispose();
- }
-
- materials = [];
- meshes = [];
- };
-
- var setMeshesVisible = function(visible) {
- for (var i=1; i < meshes.length; i++) {
- meshes[i].isVisible = visible;
- }
- }
-
- var configureFur = function(mesh, apply) {
- meshes = [mesh];
- materials = [fur];
-
- mesh.material = fur;
-
- for (var i = 1; i < shells; i++) {
- var offsetFur = new BABYLON.FurMaterial("fur" + i, scene);
- offsetFur.furLength = 4;
- offsetFur.furAngle = 0;
- offsetFur.furColor = new BABYLON.Color3(0.2, 0.2, 0.2);
- offsetFur.diffuseTexture = diffuseTexture;
- offsetFur.furOffset = i / shells;
- offsetFur.furTexture = furTexture;
- offsetFur.highLevelFur = fur.highLevelFur;
- materials.push(offsetFur);
-
- var offsetMesh = mesh.clone(mesh.name + i);
- offsetMesh.isVisible = fur.highLevelFur && apply;
- offsetMesh.material = offsetFur;
- offsetMesh.skeleton = mesh.skeleton;
- meshes.push(offsetMesh);
- }
-
- for (var i=0; i < scene.skeletons.length; i++) {
- scene.beginAnimation(scene.skeletons[i], 0, 100, true, 0.8);
- }
- }
- // fur length
- registerRangeUI("fur", "Fur length", 0, 45, function(value) {
- setValue("furLength", value);
- }, function() {
- return fur.furLength;
- });
-
- // fur angle
- registerRangeUI("fur", "Fur angle", 0, Math.PI/2, function(value) {
- setValue("furAngle", value);
- }, function() {
- return fur.furAngle;
- });
-
- // fur color
- registerColorPicker("fur", "Fur color", "#703605", function(value) {
- fur.furColor.r = value.r/255;
- fur.furColor.g = value.g/255;
- fur.furColor.b = value.b/255;
- }, function() {
- return fur.furColor;
- });
-
- var DTON = false;
- registerButtonUI("fur", "Tgl Diffuse Tex", function() {
- DTON = !DTON;
- setValue("diffuseTexture", DTON ? diffuseTexture : null);
- });
-
- var HTON = false;
- registerButtonUI("fur", "Tgl Height Tex", function() {
- HTON = !HTON;
- setValue("heightTexture", HTON ? heightTexture : null);
- });
-
- registerRangeUI("fur", "Hight Level fur", false, true, function(value) {
- setValue("highLevelFur", value);
- setMeshesVisible(value);
- }, function() {
- return fur.highLevelFur;
- });
-
- registerRangeUI("fur", "Fur Gravity", 0, 1, function(value) {
- setValue("furGravity", new BABYLON.Vector3(value, value,value));
- }, function() {
- return fur.furGravity.x;
- });
-
- // fur animation speed
- registerRangeUI("fur", "Fur speed", 1, 1000, function(value) {
- setValue("furSpeed", value);
- }, function() {
- return fur.furSpeed;
- });
-
- // fur animation speed
- registerRangeUI("fur", "Fur Spacing", 0, 20, function(value) {
- setValue("furSpacing", value);
- }, function() {
- return fur.furSpacing;
- });
-
- return {
- /*
- materials: furs,
- meshes: meshes
- */
- material: fur,
- resetFur: function() {
- resetFur();
- },
- configureFur: function(mesh, apply) {
- configureFur(mesh, apply);
- }
- };
- };
|