我解析obj文件,并尝试替换f中的顶点而不是序数。
示例f:
[[{:v 1 :vt 1 :vn 1} {:v 2 :vt 2 :vn 2} {:v 3 :vt 3 :vn 3}]
...]
但是我有错误
java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.core$map$fn__5583
在线
{:v (nth v-list (dec v)) :vt (get vt-list (dec vt)) :vn (nth vn-list (dec vn))}
我该如何解决?谢谢。
我的代码:
(defn fill-vertex [{:keys [v vt vn]} v-list vt-list vn-list]
{:v (nth v-list (dec v)) :vt (get vt-list (dec vt)) :vn (nth vn-list (dec vn))})
(defn fill-triangle [triangle v vt vn]
(map #(fill-vertex % v vt vn) triangle))
(defn to-f-list [{:keys [f v vt vn matrix]}]
(let [v-u (->> v (map #(add-perspective % matrix) (map #(viewport %))))
vn-u (map #(add-perspective % matrix) vn)]
(map #(fill-triangle % v-u vt vn-u) f)))
答案 0 :(得分:4)
(->> v (map #(add-perspective % matrix) (map #(viewport %))))
与
相同(map #(add-perspective % matrix) (map #(viewport %)) v)
但是
(map #(viewport %))
不是序列,而是一种换能器功能。
您可能是这样的:
(->> v (map #(add-perspective % matrix)) (map #(viewport %)))
在一行上执行多个操作时很难发现这种错误,因此建议您使用换行符
(->> v
(map #(add-perspective % matrix))
(map #(viewport %)))
它使遵循步骤和分组变得更加容易。