【发布时间】:2015-08-21 08:13:23
【问题描述】:
我正在使用 json 文件创建地图。 d3.js 到 Three.js。显示时,它显示为倒置。因为我可以转他? 我不确定哪个是最好的翻转方式。我想尽他所能推荐它,因为我是 d3 和 Three.js 的新手,不知道该怎么做。
在这里你可以看到它的样子:
所以我需要: http://vignette3.wikia.nocookie.net/inciclopedia/images/b/b4/Mapamundi.png/revision/20130430135955
我的代码是这样的:
mercator = d3.geo.equirectangular();
path = d3.geo.path().projection(mercator);
var translate = mercator.translate();
translate[0] = 500;
translate[1] = 0;
mercator.translate(translate);
mercator.scale(200);
var data=jsonCountrys;
var countries = [];
var i, j;
// convert to threejs meshes
for (i = 0 ; i < data.features.length ; i++) {
var geoFeature = data.features[i];
var properties = geoFeature.properties;
var feature = path(geoFeature);
// we only need to convert it to a three.js path
var mesh = transformSVGPathExposed(feature);
// add to array
for (j = 0 ; j < mesh.length ; j++) {
countries.push({"data": properties, "mesh": mesh[j]});
}
}
var material= new Array();
// extrude paths and add color
for (i = 0 ; i < countries.length ; i++) {
// create material color based on average
material[i] = new THREE.MeshBasicMaterial( { color: "#FF0000" });
// var material = new THREE.MeshPhongMaterial({
color: "#FF0000"/*,
opacity:0.5*/
// extrude mesh
var shape3d = countries[i].mesh.extrude({
amount: 2,
bevelEnabled: false
});
var materialSide = new THREE.LineBasicMaterial( { color: "#000000"} );
country[i] = new THREE.Mesh(shape3d, material[i]);
【问题讨论】:
-
您想在画布元素或
<img>元素中旋转图像? (或任何其他 html 元素) -
我想在画布内旋转地图(Three.js)
-
我从未使用过 Three.js,但试试这个:在这行之后添加
var rotate = new THREE.Euler(180, 'Y'); mercator.applyEuler(rotate);:mercator.scale(200); -
谢谢。我已经做了,但没有工作。
-
@WestLangley 我应用了这个并没有看到任何变化。 shape3D.applyMatrix(new THREE.Matrix4().makeScale(1, - 1, 1));而第二行标记我的错误,它出现在哪里a,b,c应该放在哪里? shape3D.applyMatrix(new THREE.Matrix4().makeTranslation(a, b, c));
标签: javascript d3.js three.js