<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>
Shader Test
</title>
<mce:style type="text/css"><!--
html, body {
height: 100%;
margin: 0;
padding: 0;
border: none;
}
--></mce:style><style type="text/css" mce_bogus="1"> html, body {
height: 100%;
margin: 0;
padding: 0;
border: none;
}</style>
<!-- Include sample javascript library functions-->
<mce:script type="text/javascript" src="o3djs/base.js" mce_src="o3djs/base.js"></mce:script>
<!-- Our javascript code -->
<mce:script type="text/javascript" id="o3dscript"><!--
o3djs.require('o3djs.util');
o3djs.require('o3djs.rendergraph');
o3djs.require('o3djs.pack');
o3djs.require('o3djs.math');
o3djs.require('o3djs.camera');
o3djs.require('o3djs.effect');
o3djs.require('o3djs.loader');
o3djs.require('o3djs.scene');
// Events
// init() once the page has finished loading.
// unload() when the page is unloaded.
window.onload = init;
window.onunload = unload;
// global variables
var g_o3d;
var g_client;
var g_viewInfo;
var g_o3dElement;
var g_pack;
var g_math;
var skirtPack;
var headPack;
var g_finished = false; // for selenium testing
// root node of scene
var g_sceneRoot;
var g_effects;
var g_effect_body;
var g_effect_head;
var g_bumpTextureSampler;
var g_bumpTextureSampler1;
var g_bumpTextureSampler2;
var g_viewMatrix;
var g_projMatrix;
/*
* Creates the client area.
*/
function init() {
o3djs.util.makeClients(initStep2);
}
function applyShader(pack) {
var materials = pack.getObjectsByClassName('o3d.Material');
for (var m = 0; m < materials.length; m++) {
var material = materials[m];
g_effects.createUniformParameters(material);
material.effect = g_effects;
setParam(material, 'texSampler0', g_bumpTextureSampler);
}
}
function applyShaderL(skirtPack){
var materials = skirtPack.getObjectsByClassName('o3d.Material');
for (var m = 0; m < materials.length; m++) {
var material = materials[m];
g_effect_body.createUniformParameters(material);
material.effect = g_effect_body;
setParam(material, 'texSampler0', g_bumpTextureSampler1);
}
}
function applyShaderH(headPack){
var materials = headPack.getObjectsByClassName('o3d.Material');
for (var m = 0; m < materials.length; m++) {
var material = materials[m];
g_effect_head.createUniformParameters(material);
material.effect = g_effect_head;
setParam(material, 'texSampler0', g_bumpTextureSampler2);
}
}
/*
* Initializes O3D and loads the scene into the transform graph.
*/
function initStep2(clientElements) {
// Initialize global variables and libraries.
g_o3dElement = clientElements[0];
g_o3d = g_o3dElement.o3d;
g_math = o3djs.math;
g_client = g_o3dElement.client;
// Creates a pack to manage our resources/assets
g_pack = g_client.createPack();
// Create the render graph for a view.
g_viewInfo = o3djs.rendergraph.createBasicView(
g_pack,
g_client.root,
g_client.renderGraphRoot);
// Create a transform node to act as the 'root' of the scene
g_sceneRoot = g_pack.createObject('Transform');
// Attach it to the root of the transform graph.
g_sceneRoot.parent = g_client.root;
skirtPack = g_client.createPack();
headPack = g_client.createPack();
g_effects = g_pack.createObject('Effect');
var shaderString = 'shaders/texture-only.shader';
o3djs.effect.loadEffect(g_effects, shaderString);
g_effect_body = skirtPack.createObject('Effect');
var shaderString = 'shaders/texture-only.shader';
o3djs.effect.loadEffect(g_effect_body, shaderString);
g_effect_head = headPack.createObject('Effect');
var shaderString = 'shaders/texture-only.shader';
o3djs.effect.loadEffect(g_effect_head, shaderString);
var rampWidth = 64;
var texture = g_pack.createTexture2D(
rampWidth, 1, g_o3d.Texture.XRGB8, 1, false);
var texture1 = skirtPack.createTexture2D(
rampWidth, 1, g_o3d.Texture.XRGB8, 1, false);
var texture2 = skirtPack.createTexture2D(
rampWidth, 1, g_o3d.Texture.XRGB8, 1, false);
var pixels = [];
for (var ii = 0; ii < rampWidth; ++ii) {
var level = ii > rampWidth * 0.5 ? 1 : 0.3;
pixels.push(level, level, level);
}
texture.set(0, pixels);
texture1.set(0, pixels);
texture2.set(0, pixels);
var loader = o3djs.loader.createLoader(initStep3);
loader.loadTexture(g_pack, 'assets/rock_texture.jpg',
function(texture, exception) {
if (exception) {
alert(exception);
} else {
g_bumpTextureSampler = g_pack.createObject('Sampler');
g_bumpTextureSampler.texture = texture;
g_bumpTextureSampler.mipFilter = g_o3d.Sampler.LINEAR;
}
});
loader.loadTexture(skirtPack, 'assets/rock_texture1.jpg',
function(texture1, exception) {
if (exception) {
alert(exception);
} else {
g_bumpTextureSampler1 = skirtPack.createObject('Sampler');
g_bumpTextureSampler1.texture = texture1;
g_bumpTextureSampler1.mipFilter = g_o3d.Sampler.LINEAR;
}
});
loader.loadTexture(headPack, 'assets/rock_texture2.jpg',
function(texture2, exception) {
if (exception) {
alert(exception);
} else {
g_bumpTextureSampler2 = headPack.createObject('Sampler');
g_bumpTextureSampler2.texture = texture2;
g_bumpTextureSampler2.mipFilter = g_o3d.Sampler.LINEAR;
}
});
// var transform = g_pack.createObject('Transform');
// var g_skirtTransform= transform;
loadScene(headPack, 'assets/head.o3dtgz', g_sceneRoot);
//loadScene(g_pack, 'assets/hair.o3dtgz', g_sceneRoot);
// loadScene(skirtPack, 'assets/trousers.o3dtgz', g_sceneRoot);
loadScene(skirtPack, 'assets/body.o3dtgz', g_sceneRoot);
// loadScene(g_pack, 'assets/jacket.o3dtgz', g_sceneRoot);
loadScene(g_pack, 'assets/trousers.o3dtgz', g_sceneRoot);
//loadScene(g_pack, 'assets/skirt.o3dtgz', g_sceneRoot);
loader.finish();
}
function initStep3() {
changeShader(g_pack);
applyShaderL(skirtPack);
applyShaderH(headPack);
g_finished = true; // for selenium testing.
}
/**
* Swaps which shader we are using and applies it.
*/
function changeShader(g_pack) {
var pack=g_pack;
applyShader(pack);
}
/*************************************************************************************/
function loadScene(pack, fileName, parent) {
// Get our full path to the scene
var scenePath = o3djs.util.getCurrentURI() + fileName;
// Load the file given the full path, and call the callback function
// when its done loading.
o3djs.scene.loadScene(g_client, pack, parent, scenePath, callback);
//make it facing forword
function callback(pack, parent, exception) {
if (exception) {
alert('Could not load: ' + fileName + '\n' + exception);
return;
}
// Get a CameraInfo (an object with a view and projection matrix)
// using our javascript library function
var cameraInfo = o3djs.camera.getViewAndProjectionFromCameras(
parent,
g_client.width,
g_client.height);
// Copy the view and projection to the draw context.
g_viewInfo.drawContext.view = cameraInfo.view;
g_viewInfo.drawContext.projection = cameraInfo.projection;
// Generate draw elements and setup material draw lists.
o3djs.pack.preparePack(pack, g_viewInfo);
g_finished = true; // for selenium testing
}
}
function setParam(object, paramName, value) {
var param = object.getParam(paramName);
if (param) {
param.value = value;
}
}
function getCurrentPath() {
var path = window.location.href;
var index = path.lastIndexOf('/');
return path.substring(0, index + 1);
}
/**
* Removes any callbacks so they don't get called after the page has unloaded.
*/
function unload() {
if (g_client) {
g_client.cleanup();
}
}
// --></mce:script>
</head>
<body>
<!-- Start of O3D plugin -->
O3D Test
<div id="o3d" style="width: 50%; height:80%;" ></div>
<!-- End of O3D plugin -->
<br/>
<p>
</body>
</html>
分享到:
相关推荐
实现O3D的布局,拖动、旋转(FireFox)
o3d是Google开发的基于web的3d编程API,因文件太大分三次上传
google开发的web3d编程APT o3d.提供的各种3d效果例子,因文件太大,分三个包传上
o3d lib1 graph javascript ajax
3D-o3d.zip,objective-3d视频游戏引擎,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。
关键字文档说明,含中文翻译~ 由于翻译由自己制作,因此可能比较简陋, 但是表明了O3D的整个架构体系,值得一眼~
O3D 实例 这是我自己的实例,嘿嘿,好像研究的还可以
o3d goolge javascript texture graph
根据分子和离子共存理论,建立了CaO-Al2O3 和CaO-SiO2-Al2O3 渣系的活度计算模型,并利用模型对渣中各组元的活度进行了计算,分析了 w (CaO )对渣中组元活度的影响.结果表明,在 CaO-Al2O3 渣系中,当w(CaO)小于45%时,...
NULL 博文链接:https://xml.iteye.com/blog/531459
网页 3D技术,谷歌O3D只适用于,chrome跟IE8
XRD定量分析方法在MgO-Al2O3 二元体系物相组成分析中的应用,涂小丹,张锦化,采用内标法、绝热法、全谱拟合法三种方法进行了MgO-Al2O3二元体系一系列已知物相组成的样品的XRD定量分析研究。研究结果表明,三种定
制备方法对Ni-MgO-Al2O3催化剂上CH4-CO2重整制合成气的影响,王佳佳,潘秉荣,本文以共沉淀法分别制备了一系列不同组成的镁、铝双组分及镍、镁、铝三组分层状双金属氢氧化物(LDHs),650℃焙烧后获得了镁、铝和镍
o3d是Google开发的基于web的3d编程API,因文件太大分三次上传
Al2O3体积分数对混杂复合材料摩擦磨损行为的影响,刘耀辉,杜军,采用挤压铸造法制备了含有不同体积分数AlfO3f纤维的AlfO3f+Cf短纤维铝合金复合材料。干摩擦磨损试验表明,Al2O3体积分数对Al2O3f+Cf短纤维�
用传统高温固相法制备了锆钛酸钡BaZr0.2Ti0.8O3(BZT)掺杂的铌酸钾钠K0.5Na0.5NbO3(KNN)无铅压电陶瓷,研究了不同BZT掺杂量和烧结温度对KNN陶瓷微观结构、形貌和电学性能的影响。结果表明:从样品的X射线衍射图谱...
不同Bi2O3含量对ZnO压敏电阻TSC特性的影响,罗梅馨,屠幼萍,ZnO压敏电阻的性能好坏直接关系到ZnO避雷器性能的好坏进而影响电力系统的安全稳定运行,而ZnO的烧结配方是决定其性能优劣的一个主要
CaO-Al2O3-B2O3-5%SiO2四元相图研究,刘辰生,束奇峰,B2O3对降低保护渣熔点具有显著的作用,四元基础渣系CaO-Al2O3-B2O3-SiO2的研究对新型高铝钢保护渣和无氟保护渣具有重意义。本文结合Factsag
用o3de实现unity的Texture Distortion https://catlikecoding.com/unity/tutorials/flow/texture-distortion/
结果表明:通过镀前预处理工艺及对传统镀液配方的调整,成功地在纳米Al2O3颗粒表面包覆了厚度均匀可控的镀铜层,从而提高了纳米Al2O3颗粒与铜基体间的界面结合力,并实现了纳米Al2O3颗粒在复合材料基体中均匀分布....