Имам този метод:
self.create_from_prototype_1 = function (x, y, z, body_textures, left_leg_textures, right_leg_textures) {
var body_geo = new THREE.Geometry();
var left_leg_geo = new THREE.Geometry();
var right_leg_geo = new THREE.Geometry();
self.merge_parts(body_geo, self.get_face(x, y, z), 0);
self.merge_parts(body_geo, self.get_head(x, y, z), 1);
self.merge_parts(body_geo, self.get_neck(x, y, z), 2);
self.merge_parts(body_geo, self.get_body_front(x, y, z), 3);
self.merge_parts(body_geo, self.get_body(x, y, z), 4);
self.merge_parts(body_geo, self.get_left_arm(x, y, z), 5);
self.merge_parts(body_geo, self.get_right_arm(x, y, z), 6);
self.merge_parts(body_geo, self.get_left_forearm(x, y, z), 7);
self.merge_parts(body_geo, self.get_right_forearm(x, y, z), 8);
self.merge_parts(body_geo, self.get_left_hand(x, y, z), 9);
self.merge_parts(body_geo, self.get_right_hand(x, y, z), 10);
self.merge_parts(left_leg_geo, self.get_left_leg(x, y, z), 0);
self.merge_parts(left_leg_geo, self.get_left_thigh(x, y, z), 1);
self.merge_parts(left_leg_geo, self.get_left_foot(x, y, z), 2);
self.merge_parts(right_leg_geo, self.get_right_leg(x, y, z), 0);
self.merge_parts(right_leg_geo, self.get_right_thigh(x, y, z), 1);
self.merge_parts(right_leg_geo, self.get_right_foot(x, y, z), 2);
var body_materials = [];
var left_leg_materials = [];
var right_leg_materials = [];
var i;
for (i = 0; i <= 10; i++) {
body_materials.push(new THREE.MeshBasicMaterial({
map : body_textures[ i ]
}));
}
for (i = 0; i <= 2; i++) {
left_leg_materials.push(new THREE.MeshBasicMaterial({
map : left_leg_textures[ i ]
}));
}
for (i = 0; i <= 2; i++) {
right_leg_materials.push(new THREE.MeshBasicMaterial({
map : right_leg_textures[ i ]
}));
}
var body = new THREE.Mesh(body_geo); // no textures yet :/
body.geometry.computeFaceNormals();
body.geometry.computeVertexNormals();
var left_leg = new THREE.Mesh(left_leg_geo); // no textures yet :/
left_leg.geometry.computeFaceNormals();
left_leg.geometry.computeVertexNormals();
var right_leg = new THREE.Mesh(right_leg_geo); // no textures yet :/
right_leg.geometry.computeFaceNormals();
right_leg.geometry.computeVertexNormals();
Game.scene.add(body);
Game.scene.add(left_leg);
Game.scene.add(right_leg);
return {
body : body,
left_leg : left_leg,
right_leg : right_leg
};
}
Работи перфектно и изобразява окончателната мрежа правилно, НО ако не добавя материалите към нея. Ако обаче добавя масивите от материали, които създавам по-горе, като използвам обект MeshFaceMaterial като този:
var body = new THREE.Mesh(body_geo, new THREE.MeshFaceMaterial(body_materials)); // no textures yet :/
body.geometry.computeFaceNormals();
body.geometry.computeVertexNormals();
var left_leg = new THREE.Mesh(left_leg_geo, new THREE.MeshFaceMaterial(left_leg_materials)); // no textures yet :/
left_leg.geometry.computeFaceNormals();
left_leg.geometry.computeVertexNormals();
var right_leg = new THREE.Mesh(right_leg_geo, new THREE.MeshFaceMaterial(right_leg_materials)); // no textures yet :/
right_leg.geometry.computeFaceNormals();
right_leg.geometry.computeVertexNormals();
Конзолата изхвърля „Не може да прочете „атрибути“ на свойство на undefined.“. Това бъг ли е? Търсих в Google и проверявах кода си през целия ден и не мога да намеря никакво решение, свързано с този проблем (дори опитах чрез зареждане и добавяне на MeshBasicMaterials за текстурите директно и нито едното не работи).. някаква помощ..? Благодаря!
map
и вместо това зададете материалcolor
? - person WestLangley   schedule 03.12.2014BoxGeometry
s. - person WestLangley   schedule 03.12.2014