ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

需要clojurescript相当于一个three.js javascript’loadTexture’语句

2019-08-30 03:35:29  阅读:239  来源: 互联网

标签:javascript clojure three-js clojurescript


我正在尝试将图像应用于three.js(3js)项目中的多维数据集.我在clojurescript(cljs)中写它.为此,您需要将图像从磁盘加载并将其应用于材质.原始JavaScript语句如下所示:

var material = new THREE.MeshPhongMaterial({map:THREE.ImageUtils.loadTexture("images/webgl-logo-256.jpg")})

我能想出的最好的是cljs:

(def material  (js/THREE.MeshPhongMaterial. (clj->js {:map (THREE.ImageUtils.loadTexture "images/webgl-logo-256.jpg")})))

这是有效的,因为它没有给我一个错误,但立方体没有应用图像,而是深蓝色.

使用type命令,我可以看到我假设应该具有文件名的map属性未设置:

(type material)
function(parameters) {

    THREE.Material.call( this );

    this.type = 'MeshPhongMaterial';

    this.color = new THREE.Color( 0xffffff ); // diffuse
    this.ambient = new THREE.Color( 0xffffff );
    this.emissive = new THREE.Color( 0x000000 );
    this.specular = new THREE.Color( 0x111111 );
    this.shininess = 30;

    this.metal = false;

    this.wrapAround = false;
    this.wrapRGB = new THREE.Vector3( 1, 1, 1 );

    this.map = null;
   # ...

更新:即使解决了问题(参见下面的答案),this.map仍然在type命令输出中显示为null.因此,我认为类型输出中的字段只是默认值,您不应期望它们反映所使用的实际值(?)

我最不确定的部分是loadTexture命令.我希望它写成:

(.-loadTexture THREE.ImageUtils "images/webgl-logo-256.jpg")

但这回归:

clojure.lang.ExceptionInfo: Unknown dot form of (. THREE.ImageUtils -loadTexture ("images/webgl-logo-256.jpg")) with classification [:cljs.analyzer/expr :cljs.analyzer/property :cljs.analyzer/expr] at line 1  {:tag :cljs/analysis-error, :file "", :line 1, :column 1}
nil

有谁知道如何用clojurescript写这个语句?

解决方法:

(THREE.ImageUtils.loadTexture“images / webgl-logo-256.jpg”)不是有效的ClojureScript函数调用(至少使用tree.js).这种尝试

(.-loadTexture THREE.ImageUtils "images/webgl-logo-256.jpg")

非常接近.它应该改为:

(.loadTexture (.-ImageUtils THREE) "images/webgl-logo-256.jpg")

在ClojureScript中.用于JS函数调用(包括方法)和.-用于访问对象属性.更多细节是here.

标签:javascript,clojure,three-js,clojurescript
来源: https://codeday.me/bug/20190830/1765736.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有