MeshNormalMaterial 不适用于 Three.js 自定义几何体:几何体渲染为黑色

2024-01-23

我正在尝试使用 Three.js 通过声明其向量和面来手动构造一个立方体;我可以使用下面的代码来完成此操作,但是,该材质似乎没有按预期工作,而是立方体以纯黑色渲染。

var geom = new THREE.Geometry(); 
var v1 = new THREE.Vector3( -1,  1, 0.1 ),
    v2 = new THREE.Vector3(  1,  1, 0.1 ),
    v3 = new THREE.Vector3(  1, -1, 0.1 ),
    v4 = new THREE.Vector3( -1, -1, 0.1 ),
    v5 = new THREE.Vector3( -1,  1, 2   ),
    v6 = new THREE.Vector3(  1,  1, 2   ),
    v7 = new THREE.Vector3(  1, -1, 2   ),
    v8 = new THREE.Vector3( -1, -1, 2   );

geom.vertices.push(v1,v2,v3,v4,v5,v6,v7,v8);

geom.faces.push(
  new THREE.Face3(0,1,3),
  new THREE.Face3(1,2,3),
  new THREE.Face3(4,5,7),
  new THREE.Face3(5,6,7),
  new THREE.Face3(1,4,5),
  new THREE.Face3(0,1,4),
  new THREE.Face3(2,3,7),
  new THREE.Face3(2,6,7),
  new THREE.Face3(0,3,7),
  new THREE.Face3(0,4,7),
  new THREE.Face3(1,2,5),
  new THREE.Face3(2,5,6)  
);

var mat = new THREE.MeshNormalMaterial();
mat.side = THREE.DoubleSide;
var cube = new THREE.Mesh( geom, mat);
scene.add(cube);

如果我使用下面的代码正常渲染立方体,立方体将按预期渲染。

cube = new THREE.Mesh(new THREE.CubeGeometry(2, 2, 2), new THREE.MeshNormalMaterial());
scene.add(cube);

您尚未指定顶点法线。为了快速计算面部法线,如下所示:

geom.computeFaceNormals();

但您应该学习如何在自定义几何体中设置顶点法线。

另外,面“绕线顺序”应为逆时针方向。你并没有始终如一地这样做。

如果正确定义面,则可以删除side = THREE.DoubleSide.

三.js r.90

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MeshNormalMaterial 不适用于 Three.js 自定义几何体:几何体渲染为黑色 的相关文章

  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • Three.js:缩放几何图形后错误的 BoundingBox

    在我的场景中 我有一个简单的立方体 var test new THREE Mesh new THREE CubeGeometry 10 10 10 new THREE MeshBasicMaterial scene add test 该立方
  • 在新的 Google 协作平台 <嵌入 HTML> 中使用 localStorage 和 IndexedDB 不起作用

    我正在尝试将新的 Google 协作平台用于我开发的网页 但是 我在存储本地数据时遇到了问题 本地文件在 Windows 和 Apple safari chrome 中运行良好 从 Google 协作平台尝试一下 没有什么乐趣 此外 在 s
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • 有没有办法使用 Rspec/Capybara/Selenium 将 javascript console.errors 打印到终端?

    当我运行 rspec 时 是否可以让 capybara selenium 向 rspec 报告任何 javascript console errors 和其他异常 我有一大堆测试失败 但当我手动测试它时 我的应用程序正在运行 如果不知道仅在
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • 在 CKEditor 中设置字体大小和字体系列

    我正在使用 ckeditor 我想问一下这个插件如何设置font family和font size 我尝试过使用 CKEDITOR config font defaultLabel Arial CKEDITOR config fontSiz
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • 如何在需要旧式 unsigned char 的地方使用新的 std::byte 类型?

    std byte是 C 17 中的一个新类型 其形式为enum class byte unsigned char 这使得在没有适当转换的情况下无法使用它 因此 我为这种类型的向量创建了一个别名来表示字节数组 using Bytes std
  • 将 GLSurfaceView 的屏幕捕获为位图

    我需要能够捕获一个图像GLSurfaceView在某个时间点 我有以下代码 relative setDrawingCacheEnabled true screenshot Bitmap createBitmap relative getDr
  • xgboost.plot_tree:二元特征解释

    我构建了一个 XGBoost 模型并试图检查各个估计器 作为参考 这是一个具有离散和连续输入特征的二元分类任务 输入特征矩阵是scipy sparse csr matrix 然而 当我去检查单个估计器时 我发现很难解释二进制输入特征 例如f
  • 无法确定引发 NullPointer 异常的原因

    我有一个看起来像这样的方法 try doStuff catch Exception ex logger error ex 我并没有真正使用像 doStuff 这样的方法名称 这只是为了让事情变得简单 在 doStuff 中 我做了很多事情
  • 对 pandas 系列中的多索引级别进行总结

    我想对具有 3 级多重索引的系列中的一个级别进行求和 边缘化 以生成具有 2 级多重索引的系列 例如 如果我有以下内容 ind tuple x for x in ABC ABc AbC Abc aBC aBc abC abc mi pd M
  • 如何使用idlelib.PyShell在tkinter程序中嵌入解释器?

    我需要将交互式 python 解释器嵌入到我的 tkinter 程序中 谁能帮我看看如何整合它 我已经看过了main 功能 但它对于我的需求来说太复杂了 但我似乎无法在不破坏它的情况下减少它 您必须执行的操作的一些细节可能取决于 IDLE
  • 图像可以在 chrome 中下载,但不能在 safari 中下载

    在我的应用程序中我使用html2canvas用于将 HTML 转换为画布 然后我使用该画布将该画布转换为图像toDataURL 在 chrome 中一切都很好 图像在页面加载后很快就会下载 但在 safari 中图像加载在同一页面中而无需下
  • 使用 ast.literal_eval 时字符串格式错误

    我使用 json 转储 然后使用 json 加载相同的数据 数据是unicode 所以我将其转换为字符串 使用 ast literla eval 我尝试获取要字典的字符串类型 但收到错误 格式错误的字符串 json加载的输出如下 data
  • 在 Java 应用程序中执行“sp_msforeachdb”

    StackOverflow 社区大家好 我来找你是为了分享我的问题之一 我必须提取一个SQL Server 实例的每个数据库中的每个表的列表 我发现了这个查询 EXEC sp msforeachdb Use SELECT DB NAME A
  • 从 Redux Observable 返回 Promise

    也许我的想法是错误的 但我使用 redux thunk 的常见模式是返回一个承诺 这样当某件事完成或失败时我可以在容器对象中执行一些额外的操作 以 Thunk 为例 动作创建者 const action data gt dispatch g
  • 选项卡布局中的标题不可见

    与 一起工作TabLayout问题是标题不可见 我覆盖了getPageTitle在适配器中 我还返回了一个字符串 该字符串将是标题 但该字符串没有显示 我已经调试了我从服务器获取标题的应用程序 是的 我跟着this https stacko
  • 获取 ListViewItem 子项

  • Vue.js 是否有内置方法将持久对象的副本添加到重复数组中

    我有一个 Vue js 应用程序 其中对一系列项目有 v repeat 我想将一个新项目添加到项目列表中 当我尝试时this items push this newItem 推送的对象仍然绑定到输入 考虑以下几点 new Vue el de
  • Xcode 4 中的 Cocoa 绑定

    Objective c 是可以学习的 可可是可以学习的 我发现 Interface Builder 及其后代 Xcode 4 完全难以理解 没有文本 相当于 C 或 Obj c 源代码 可供参考 所有的描述都是 拖到这里 连接那个 Ctl
  • 如何从私有 Docker Hub 存储库远程提取 Docker 映像?

    我在 Docker Hub 私有存储库中有多个映像 我需要使用 Docker 远程 Rest API 将这些映像拉到远程计算机上 有没有办法远程验证 这些是我想远程拨打的电话 docker login docker pull myrepo
  • 无法使用 Youtube Data API 删除视频

    无法使用 Youtube Data API 删除视频 我正在使用 Python 客户端库 所有这些似乎都是直接来自文档 所以我真的很困惑为什么它不起作用 这是我的功能 def delete youtube video by id video
  • 使用 asort() 对包含日期的数组进行排序无法正常工作

    这是未排序的数组 格式为 dd mm yyyy array 6 7 0 gt string 10 28 04 2014 7 1 gt string 10 29 04 2014 7 2 gt string 10 30 04 2014 7 3
  • 软件许可计划[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我设计了以下机制 以便在不直接连接到服务器的情况下许可软件 看起来很简单 但我没有发现任何严重的缺陷 我计划使用非对称加密 以便从 1 个服务器
  • 控制台中的文本/光标定位

    你们中有人建议我如何在 x 出口顶部显示时间 我目前正在使用 Console Write 和 ch gotoxy 将光标设置到不同的位置 顺便说一句 我的光标是 293 旁边的 我还没有尝试过 但是创建一个只写入时间的不同线程 或新 TPL
  • MeshNormalMaterial 不适用于 Three.js 自定义几何体:几何体渲染为黑色

    我正在尝试使用 Three js 通过声明其向量和面来手动构造一个立方体 我可以使用下面的代码来完成此操作 但是 该材质似乎没有按预期工作 而是立方体以纯黑色渲染 var geom new THREE Geometry var v1 new