BabylonJS. Урок 3 — материалы

от автора

В прошлом уроке ты научился создавать различные меши. Но они сейчас визуально выглядят как-то мрачновато. Давай поработаем над их визуальным видом.



Структура меша

var sphere1 = BABYLON.Mesh.CreateSphere("sphere1", 10.0, 9.0, scene); var materialSphere1 = new BABYLON.StandardMaterial("texture1", scene); materialSphere1.wireframe = true; sphere1.material = materialSphere1; 

Переходим ко второй сфере. Давай окрасим её в красный цвет и придадим немного прозрачности:

var sphere2 = BABYLON.Mesh.CreateSphere("sphere2", 10.0, 12.0, scene); var materialSphere2 = new BABYLON.StandardMaterial("texture2", scene); materialSphere2.diffuseColor = new BABYLON.Color3(1, 0, 0); materialSphere2.alpha = 0.3; sphere2.material = materialSphere2; 

Теперь давай перейдем к наиболее используемому материалу — текстуре. Работаем с третьей сферой:

var sphere3 = BABYLON.Mesh.CreateSphere("sphere3", 10.0, 11.0, scene); var materialSphere3 = new BABYLON.StandardMaterial("texture3", scene); materialSphere3.diffuseTexture = new BABYLON.Texture("t1.jpg", scene); sphere3.material = materialSphere3; 

Также, ты можешь вращать текстуру вертикально и горизонтально. Работаем с четвертой сферой:

var sphere4 = BABYLON.Mesh.CreateSphere("sphere4", 10.0, 5.0, scene); var materialSphere4 = new BABYLON.StandardMaterial("texture4", scene); materialSphere4.diffuseTexture = new BABYLON.Texture("t1.jpg", scene); materialSphere4.diffuseTexture.vOffset = 0.6; // 60% materialSphere4.diffuseTexture.uOffset = 0.4; // 40% sphere4.material = materialSphere4; 

Переходим к последней сфере. Если твоя текстура имеет альфа-канал, и ты хочешь, чтобы слой альфа-канала был прозрачным, то нужно установить значение hasAlpha в состояние true. Если же ты написал false, то вместо прозрачности будет черный непрозрачный слой:

var sphere5 = BABYLON.Mesh.CreateSphere("sphere5", 10.0, 12.0, scene); var materialSphere5 = new BABYLON.StandardMaterial("texture5", scene); materialSphere5.diffuseTexture = new BABYLON.Texture("t2.png", scene); materialSphere5.diffuseTexture.hasAlpha = true; sphere5.material = materialSphere5; 

Пример | Сорцы

Готовый код

// Инициализируем движок и указываем с каким элементом <canvas> ему работать 			var canvas = document.querySelector("#renderCanvas"); 			var engine = new BABYLON.Engine(canvas, true); 			// ------------------------------------------------------------- 			// Вызываем функцию создания сцены. И окрашиваем её в белый цвет 			var createScene = function (){ 				var scene = new BABYLON.Scene(engine); 				scene.clearColor = new BABYLON.Color3(1, 1, 1); 			// Устанавливаем камеру 			var camera = new BABYLON.FreeCamera("camera1", new BABYLON.Vector3(0, 5, -10), scene); 				camera.setTarget(BABYLON.Vector3.Zero()); 				camera.attachControl(canvas, false); 			// Освещение 			var light = new BABYLON.HemisphericLight("light1", new BABYLON.Vector3(0, 1, 0), scene); 				light.intensity = 0.5; 			// 	Структура меша 			var sphere1 = BABYLON.Mesh.CreateSphere("sphere1", 10.0, 9.0, scene); 			var materialSphere1 = new BABYLON.StandardMaterial("texture1", scene); 			materialSphere1.wireframe = true; 			sphere1.material = materialSphere1; 			// Наложение цвета с добавлением прозрачности 			var sphere2 = BABYLON.Mesh.CreateSphere("sphere2", 10.0, 12.0, scene); 			var materialSphere2 = new BABYLON.StandardMaterial("texture2", scene); 			materialSphere2.diffuseColor = new BABYLON.Color3(1, 0, 0); 			materialSphere2.alpha = 0.3; 			sphere2.material = materialSphere2; 			// Наложение текстуры 			var sphere3 = BABYLON.Mesh.CreateSphere("sphere3", 10.0, 12.0, scene); 			var materialSphere3 = new BABYLON.StandardMaterial("texture3", scene); 			materialSphere3.diffuseTexture = new BABYLON.Texture("one.png", scene); 			sphere3.material = materialSphere3; 			// Наложение текстуры с вращением  			var sphere4 = BABYLON.Mesh.CreateSphere("sphere4", 10.0, 12.0, scene); 			var materialSphere4 = new BABYLON.StandardMaterial("texture4", scene); 			materialSphere4.diffuseTexture = new BABYLON.Texture("one.png", scene); 			materialSphere4.diffuseTexture.vOffset = 0.6; // 40% 			materialSphere4.diffuseTexture.uOffset = 0.4; // 60% 			sphere4.material = materialSphere4; 			// Наложение текстуры с альфа-каналом 			var sphere5 = BABYLON.Mesh.CreateSphere("sphere5", 10.0, 12.0, scene); 			var materialSphere5 = new BABYLON.StandardMaterial("texture5", scene); 			materialSphere5.diffuseTexture = new BABYLON.Texture("two.png", scene); 			materialSphere5.diffuseTexture.hasAlpha = true; 			sphere5.material = materialSphere5; 			// Позиционирование 			sphere1.position.x = 0; 			sphere2.position.x = 20; 			sphere3.position.x = 40; 			sphere4.position.x = 60; 			sphere5.position.x = 80;  			return scene; 			}; 			// ------------------------------------------------------------- 			// Указываем фреймворку, что сцена готова и отправляем её на рендеринг 			var scene = createScene(); 			engine.runRenderLoop(function (){ 				scene.render(); 			}); 			// Масшабируем сцены под любые разрешения 			window.addEventListener("resize", function (){ 				engine.resize(); 			}) 

ссылка на оригинал статьи http://habrahabr.ru/post/267261/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *