Scenejs Прямоугольная призма с сохранением фактуры
Я новичок в Scenejs со следующей проблемой. Я получаю от 30 до 50 миниатюрных изображений по запросу. Изображения имеют ширину около 200 пикселей и высоту от 100 до 300 пикселей. Я хочу представить каждый эскиз изображения в виде текстуры на отдельных прямоугольных призмах, расположенных в 3D-сцене. Многие примеры, которые я исследовал, показывают только кубы и с однородными квадратными изображениями. Когда я попытался отрегулировать геометрию прямоугольных призм, изображения появляются несколько раз. Выдержки из кода приведены ниже. Кто-нибудь может указать мне правильное направление?
function get_Json_test_data()
{
var wiki_node_top =[{
type: "cameras/orbit",
yaw: 0,
pitch: 0,
zoom: 10,
zoomSensitivity:0.5,
nodes: [
{
type: "material",
id: "myMaterial",
color: { r: 1, g: 1, b: 1.0 }
}
]
}];
scene = SceneJS.createScene({
nodes: wiki_node_top
});
}
function add_node_wiki (json1)
{
var wiki_x=-4;
var wiki_y=-4;
var wiki_z=0;
var test1 = json1.query.pages;
var test2 = [];
var icount = 0;
$.each(test1, function (i, item) {
test2[icount] = item;
icount++;
});
$.each(test2, function (i, item) {
var wiki_x_size=item.imageinfo[0].thumbwidth/200;
var wiki_y_size=item.imageinfo[0].thumbheight/200;
wiki_x +=2*wiki_x_size;
wiki_y += 2*wiki_y_size;
update_scene(item, wiki_x,wiki_y,wiki_z,wiki_x_size,wiki_y_size);
});
}
function update_scene(item, wiki_x,wiki_y,wiki_z,wiki_x_size,wiki_y_size)
{
scene.getNode("myMaterial",
function(myMaterial) {
myMaterial.addNode({
type: "texture",
src: item.imageinfo[0].thumburl,
wrapS: "ClampToEdgeWrapping",
wrapT: "ClampToEdgeWrapping",
nodes:[{
type: "translate",
x: wiki_x,
y: wiki_y,
z: wiki_z,
nodes: [{
type: "geometry/box",
xSize: wiki_x_size,
ySize: wiki_y_size,
zSize: 1
}]
}]
});
})
}
1 ответ
Параметры текстуры SceneJS, например, для "wrapS" и "wrapT", являются представлением верблюжьих регистров перечислений WebGL.
Так что, поскольку "ClampToEdgeWrapping" не поддерживается в WebGL (насколько мне известно), SceneJS не распознает это.
См. Карту поддерживаемых перечислений здесь: https://github.com/xeolabs/scenejs/blob/v4.0/src/core/webgl/enums.js
Может быть, попробовать "ClampToEdge"?