Three.js是一个轻量级的跨浏览器JavaScript库/ API,用于在Web浏览器上创建和显示动画3D计算机图形。 Three.js脚本可以与HTML5 canvas元素,SVG或WebGL结合使用。
{ “进口”:{ “三”:“https://unpkg.com/ [email protected]/build/ Three.module.js”, “三/</desc> <question vote="0"> <pre><code><script type="importmap"> { "imports": { "three": "https://unpkg.com/<a href="/cdn-cgi/l/email-protection" data-cfemail="a4d0ccd6c1c1e4d2948a9592968a94">[email protected]</a>/build/three.module.js", "three/addons/": "https://unpkg.com/<a href="/cdn-cgi/l/email-protection" data-cfemail="d5a1bda7b0b095a3e5fbe4e3e7fbe5">[email protected]</a>/examples/jsm/" } } </script> <script type="module"> import * as THREE from 'three'; const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 ); camera.position.z = 10; camera.position.x = -5; const renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); const geometry = new THREE.BoxGeometry( 2, 2, 2 ); var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); const cube = new THREE.Mesh( geometry, material ); scene.add( cube ); material.opacity = 0.2; material.transparent = true; function animate() { requestAnimationFrame( animate ); renderer.render( scene, camera ); } animate(); </script> </code></pre> <p>以上工作,立方体的不透明度正在改变,但如果移动<pre><code>material</code></pre>更新到setTimeout函数,如:</p> <pre><code>// material.opacity = 0.2; // material.transparent = true; var tmout = function() { material.opacity = 0.2; material.transparent = true; } setTimeout(tmout, 1000 ); </code></pre> <p>那么不透明度不会改变。为什么 <pre><code>material</code></pre> 在 setTimeout 内没有改变?这里有什么不正确的吗?</p> </question> <answer tick="false" vote="0"> <p>使用箭头函数从调用模块内捕获 this 的上下文。 ́\<em>(ツ)</em>/́</p> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code>import * as THREE from 'three'; const scene = new THREE.Scene(); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); camera.position.z = 10; camera.position.x = -5; const renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); const geometry = new THREE.BoxGeometry(2, 2, 2); var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); const cube = new THREE.Mesh(geometry, material); scene.add(cube); material.opacity = 1; material.transparent = true; function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); setTimeout(() => { this.material.opacity = 0.2; this.material.transparent = true; }, 1000); } animate();</code></pre> </div> </div> <p></p> </answer> </body></html>
我正在尝试加载具有glb 格式的3D 模型。 这是代码: 我除了什么: 图像 我有什么:图片 var renderer = new THREE.WebGLRenderer(); 渲染器.setSize(1000, 1000); 渲染器。
我想在我的网站上使用一个 Blender 模型,我在其中使用 THREE.js,但是当我加载 GLTF 文件时,它看起来损坏了。东西丢失或位置错误,灯光也似乎......
我正在尝试挤出一些形状,但是我发现挤出后,输出看起来像是旋转了一点。 我渲染了三角形的实际形状和挤压形状......
我正在尝试使用基本的盒子几何图形在 ThreeJs 中渲染这个立方体,但线条很奇怪且不稳定。即使我将线框设置为 false 并放置一个实心立方体,立方体的边缘仍然像......
WebGL: INVALID_VALUE: texImage2D: 宽度或高度超出范围是什么意思
我想在 Three.js 后处理中使用 UnrealBloomPass,但是添加effectComposer.addPass(unrealBloomPass) 后出现黑屏,在控制台上我得到以下信息 WebGL:INVALID_VALUE:
我正在尝试将纹理应用于 nextjs 组件内部的球体。 我已经用下面的代码尝试过,但它只会显示一个黑球。 我读过这可能与
我正在创建 Three.js 应用程序。我已经加载了我的 STL 对象。我使用过“OrbitControls”。当我开始使用鼠标中间滚动按钮缩放对象时,它会在某个点中断。 我的相机...
我正在尝试调整现有的 Three.js 项目以与 WebVR 配合使用。我已经取得了不错的进步——我可以在 VR 中环顾场景,但我无法将相机位置移离初始位置
我的反应三纤维背景应该是黑暗的星空。但在场景中却非常明亮。这是原始图像: 这是天空盒的代码: const { 场景 } = useThree(); ...
我有一个 THREE.js 平面,使用 Perlin 噪声上下移动点来制作地形。现在我需要为相机添加物理特性,以防止它从飞机上掉下来。 我希望能够
下面是设置纹理并将其映射到大球体上的代码。我已经尝试了各种包装,但背景仍然不光滑,因为有一个明显的连接......
我在画布上有一个立方体网格,我想将其移动到左侧(更改其 X 轴)而不更改其旋转点。我尝试将参数position={[1,0,0]}应用于...
我使用React构建了一个登陆页面,然后决定在主页中添加一个样条场景,它工作得很好,除了在加载时,当时整个页面冻结并且当我单击...
有没有办法找出场景渲染部分的宽度? 例如,如果我们有一个宽度为 100 的网格,但使用一定程度的缩放进行渲染...我如何计算...的宽度...
仅将材质设置为来自 Open Bim 组件库/三个 js 的fragmentMesh 类的一个实例
我尝试为特定的fragmentMesh 设置独特的材质。然而,事实证明,fragmentMesh 可以有多个实例,因此材质将应用于其所有实例。 怎么...
我希望基于“.stp”文件创建一个简单的 3D 模型预览。 在搜索时我发现了三个 JS libairy。这个库允许您渲染 3D 文件,如下例所示:https://thirdjs....
in ThreeJS:我有一个 object3D,想用它做简单的关键帧动画:移动、旋转、缩放。 这里有一个简单的例子:https:// Threejs.org/examples/#misc_animation_keys 但它确实...
在我的应用程序中,我想向加载的 .obj 模型添加纹理。我的 .fbx 加载模型也有同样的情况。下面是我的示例代码,但这仅适用于 sphereGeometry 之类的东西,而不是......
我是Three.js的初学者。我想让我的 3D 模型像这样的文本代替像素,或者小文本像薄膜一样覆盖它。看来我需要使用粒子系统...