在WPF中嵌入Three.js查看器
Embed Three.js viewer in WPF
我正在尝试使用Three.js来创建一个跨平台的3D渲染器,一个可以在几乎任何平台上使用的,只需在本地应用程序中使用一个"WebView"/"WebBrowser"类型的元素。到目前为止,我已经让它在Windows 8.1(商店)和Windows Phone 8.1应用程序上工作,并且查看器在Internet Explorer 11桌面浏览器中工作正常。我的问题是我不能让它在同一台桌面计算机上的WPF应用程序中工作。
目前我正在使用以下代码来加载我的页面:
private const string MainUri = "file:///{0}/Html/stlviewer.html";
string curDir = Directory.GetCurrentDirectory();
webView.Navigate(new Uri(String.Format(MainUri, curDir)));
然后发生的是,一旦我启动我的应用程序首先我得到一个对话框询问我是否要运行ActiveX(这是不可接受的),当我说是,我得到错误在3 .min.js在第22行字符190错误"预期':'和代码0。这最终会导致其他JavaScript文件中对THREE的未定义引用,以及我的html文件中的主脚本。
我试过添加WEB标记:
<!-- saved from url=(0016)http://localhost -->
这确实带走了ActiveX对话框,但它似乎使我的JavaScript问题更糟,因为现在我仍然得到JavaScript错误在相同的文件,但突然在所有文件除了我的html文件没有关于错误的信息了,它只是说0在所有字段除了错误一个只是说'脚本错误'。
到底是什么导致了这个,或者至少我做错了什么,因为这在正常的IE,商店应用程序和WP中工作,但现在突然WPF决定有一些问题与three.min.js文件?
p。我的three.min.js文件是标准的r66文件,我知道r67存在,但WP 8.1还不兼容。
编辑:如果有人想知道,使用下面的标签也不起作用:
<!-- saved from url=(0014)about:internet -->
编辑:好吧,我发现问题可能是WPF中的web浏览器使用IE7(或者至少在它的行为模式下)而不是IE11,但我不知道这是否可以修复。
编辑:Ok WebGL现在至少在遵循http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version在IE11模式下设置web浏览器后工作,但是当我使用web标签的标记来禁用ActiveX对话框时,突然我无法加载任何JavaScript文件了。在这种设置下,触控功能不像在桌面IE上那样工作。我使用Hammer.js进行触摸,但它似乎没有向Hammer发送多点触摸信息,它只尝试实现缩放。什么好主意吗?
尝试CefSharp
而不是WebBrowser
组件,这些组件在WinForms和WPF中都是现成的
- 在Three.js中导出网格会提高性能吗
- 如何在three.js上添加两个向量
- Three.js Points Rotation
- 无法读取属性'材料'未定义的Three.js
- Potree/Three.js测量问题
- Three.JS OBJ模型未显示
- 有没有一种方法可以获得three.js的最小/lite版本
- JS和three.JS,在浏览器中进行参数测试
- 参数列表Three.js之后的未捕获语法错误:缺少)
- 如何在three.js中有效地使用TraingleStripDrawMode
- 通过拖动可以更改三维模型对象在Three.js场景中的位置
- three.js:如何让透明的png精灵投射和接收阴影
- Three.js更改材质
- three.js EffectComposer's渲染目标
- 单击以将相机放置在Three js中的对象附近
- Three.js Three.投影仪已移至
- THREE.js轨道控制不工作
- three.js:three.Vector3.sub()动作怪异
- Three.js THREE.ImageUtils.loadTexture Image resize
- 使用 Three.js THREE.textureLoader 预加载多个纹理