我使用 D3 来标记 X3Dom,如下例所示:http: //bl.ocks.org/jbeuckm/5620882
我将示例转换为使用简单的正方形而不是框:http ://bl.ocks.org/jbeuckm/5645205
在以后的版本中,我开始加载数据并从各种回调中调用 plotAxis 和 plotData。如果我像第一个示例中那样绘制框,它会按预期工作:
shape.append("x3d:box");
但是当我替换我的 2-triangle face set 时......
shape.append("x3d:indexedFaceSet")
.attr("coordIndex", "0 1 2 -1 2 3 0 -1")
.attr('solid', 'false')
.append("x3d:coordinate")
.attr("point", "-1 -1 0, 1 -1 0, 1 1 0, -1 1 0")
它不起作用,我收到此错误:
Uncaught TypeError: Cannot call method 'getPoints' of null
x3dom.registerNodeType.defineClass.nodeChanged x3dom.js:3175
x3dom.NodeNameSpace.setupTree x3dom.js:1929
domEventListener.onNodeInserted x3dom.js:1296
append d3.v2.js:3701
d3_selectionPrototype.select d3.v2.js:3606
d3_selectionPrototype.append d3.v2.js:3707
plotData tran_3d.html:132
(anonymous function) tran_3d.html:240
st.Callbacks.f jquery-1.9.0.min.js:1
st.Callbacks.p.fireWith jquery-1.9.0.min.js:1
st.extend.Deferred.st.each.i.(anonymous function) jquery-1.9.0.min.js:1
(anonymous function) tran_3d.html:280
d3.json d3.v2.js:2950
ready d3.v2.js:2940
看起来“插入节点”的代码可能会在 <Coordinate> 子元素添加到 <IndexedFaceSet> 之前分析形状。但是,我不确定为什么相同的 append 语句会在一种情况下工作,而不是在另一种情况下工作。同样,仅在我的数据加载设置中附加一个 x3d:box 就可以正常工作,但是 x3d:indexedFaceSet 会引发错误。