3D渲染窗口出图有杂图是什么原因?

17.9k 次阅读
threejs下载位置:我在Facebook上看到Facebook实现了3D全景图,然后,一直很好奇,最后,我发现threejs里面有一个库竟然可以实现,一下我贴出代码:
&!DOCTYPE html&
&meta charset="utf-8"&
&meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"&
&title&three.js css3d - panorama&/title&
background-color: #000000;
margin: 0;
width: 100%;
padding: 5
font-family: M
font-size: 13
font-weight:
text-align:
z-index: 1;
&script src="../build/three.min.js"&&/script& &!-- 此处引入threejs基础类 --&
&script src="js/renderers/CSS3DRenderer.js"&&/script& &!-- 此处引入CSS3Drenderer.js类 --&
&!-- 以上两个文件,在下载threejs的时候就有的,引入就好 --&
var camera, scene,
var geometry, material,
var target = new THREE.Vector3();
var lon = 90, lat = 0;
var phi = 0, theta = 0;
var touchX, touchY;
animate();
function init() {
camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 1000 );
scene = new THREE.Scene();
/** 次数是重点说明的
* 这个sides对应的是六张图位于立体坐标轴内的位置,里面的position又包含x,y,三个轴
* 然后ratation是三个轴上的变换
var sides = [
position: [ 512, 0, 0 ], // 1
rotation: [ 0, -Math.PI / 2, 0 ]
position: [ -512, 0, 0 ], // 2
rotation: [ 0, Math.PI / 2, 0 ]
position: [ 0,
512, 0 ], // 3
rotation: [ Math.PI / 2, 0, Math.PI ]
position: [ 0, -512, 0 ], // 4
rotation: [ - Math.PI / 2, 0, Math.PI ]
position: [ 0, 0,
512 ], // 5
rotation: [ 0, Math.PI, 0 ]
position: [ 0, 0, -512 ], // 6
rotation: [ 0, 0, 0 ]
var canvas = document.createElement('canvas');
var image = document.createElement('img');
image.src = 'picture/360photos.jpg'; // 画图,这里引入的这张图片,是一张图上集合了6张图片
image.height = 6144;
image.width = 1024;
canvas.width = 1024;
canvas.height = 1024;
// 这里有判断image.onload,这里是判断创建的image节点是否把引入的图片加载进来
image.onload = function() {
for ( var i = 0; i & sides. i ++ ) { // 由于是六张图放在一张图片上,然后这里分割六张图片
var cxt = canvas.getContext("2d");
cxt.drawImage(image, 0, -1024*i);
var side = sides[ i ];
var element = document.createElement( 'img' );
element.width = 1026; // 2 pixels extra to close the gap.
document.getElementsByTagName('body')[0].appendChild(canvas);
var _img_url = canvas.toDataURL("image/png"); // 获取图片位置
element.src = _img_
var object = new THREE.CSS3DObject( element ); // 这里根据sides把图片放在坐标轴上进行渲染
object.position.fromArray( side.position );
object.rotation.fromArray( side.rotation );
scene.add( object );
renderer = new THREE.CSS3DRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
document.addEventListener( 'mousedown', onDocumentMouseDown, false );
document.addEventListener( 'mousewheel', onDocumentMouseWheel, false );
document.addEventListener( 'touchstart', onDocumentTouchStart, false );
document.addEventListener( 'touchmove', onDocumentTouchMove, false );
window.addEventListener( 'resize', onWindowResize, false );
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerH
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
function onDocumentMouseDown( event ) {
event.preventDefault();
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
document.addEventListener( 'mouseup', onDocumentMouseUp, false );
function onDocumentMouseMove( event ) {
var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
lon -= movementX * 0.1;
lat += movementY * 0.1;
function onDocumentMouseUp( event ) {
document.removeEventListener( 'mousemove', onDocumentMouseMove );
document.removeEventListener( 'mouseup', onDocumentMouseUp );
function onDocumentMouseWheel( event ) {
camera.fov -= event.wheelDeltaY * 0.05;
camera.updateProjectionMatrix();
function onDocumentTouchStart( event ) {
event.preventDefault();
var touch = event.touches[ 0 ];
touchX = touch.screenX;
touchY = touch.screenY;
function onDocumentTouchMove( event ) {
event.preventDefault();
var touch = event.touches[ 0 ];
lon -= ( touch.screenX - touchX ) * 0.1;
lat += ( touch.screenY - touchY ) * 0.1;
touchX = touch.screenX;
touchY = touch.screenY;
function animate() {
requestAnimationFrame( animate );
lat = Math.max( - 85, Math.min( 85, lat ) );
phi = THREE.Math.degToRad( 90 - lat );
theta = THREE.Math.degToRad( lon );
target.x = Math.sin( phi ) * Math.cos( theta );
target.y = Math.cos( phi );
target.z = Math.sin( phi ) * Math.sin( theta );
camera.lookAt( target );
renderer.render( scene, camera );
以上,我把重要的说明点都写上了注释,然后,注意,我这里的图片是去facebook上下载下来的,我把Facebook上的图片手动进行了左右翻转实现的程序,如果不需要手动翻转,如果是渲染Facebook上的图片的话,需要把Facebook的图片用程序进行翻转再分割才能渲染出正常的图片,否则渲染出来的全景是不正常的。我下面附上的图很大,宽度是1024像素的,然后高度是1024像素*6;原图是这张图的左右翻转。下面,我附上图,此图来自简书上传的,可能会有盗链导致加载不出来:
20 收藏&&|&&52
为啥这么多人收藏,都不给我点推荐的
为啥这么多人收藏,都不给我点推荐的
大神这个图片是怎么制作的 不明白求告知
大神这个图片是怎么制作的 不明白求告知
哈哈,有那种拍3D图片的相机
@Clking[clking_586e70b875086] 哈哈,有那种拍3D图片的相机
哈哈,有那种拍3D图片的相机
@Clking[clking_586e70b875086] 哈哈,有那种拍3D图片的相机
嗯,不错,不过其实three.js本身就可以的,建一个球体SphereGeometry,然后用一张全景图当材料,相机放中心就得了,当然还有其他方法我也没太深究
嗯,不错,不过其实three.js本身就可以的,建一个球体SphereGeometry,然后用一张全景图当材料,相机放中心就得了,当然还有其他方法我也没太深究
这个其实也算是three.js的内容,不过这个是贴在四个面上,球形我觉得对拍照的要求和图片处理要求太高
这个其实也算是three.js的内容,不过这个是贴在四个面上,球形我觉得对拍照的要求和图片处理要求太高
这个在手机端好像不能运行
这个在手机端好像不能运行
确实在手机端不行
确实在手机端不行
手机端我没看,另外,必须要引入three.js哈
手机端我没看,另外,必须要引入three.js哈
博主,把demo发一下吧
博主,把demo发一下吧
上面就是全部demo
上面就是全部demo
楼主有在谷歌火狐以外的国内几个浏览器试过吗,我试了不兼容,当视线移到左右两个侧边的图时会花,有什么好的方法吗
楼主有在谷歌火狐以外的国内几个浏览器试过吗,我试了不兼容,当视线移到左右两个侧边的图时会花,有什么好的方法吗
博主,我没成功,可以给我发下demo吗?
博主,我没成功,可以给我发下demo吗?
文章里有所有demo,至于threejs自己到threejs.org去下载
文章里有所有demo,至于threejs自己到threejs.org去下载
这种东西都是在谷歌和火狐浏览器使用的,国内的浏览器根本不能叫做浏览器,最多算是一个查看网页的软件
这种东西都是在谷歌和火狐浏览器使用的,国内的浏览器根本不能叫做浏览器,最多算是一个查看网页的软件
低级黑了啊兄弟。。国内浏览器其实和chromium没啥区别。。因为就是照抄的
低级黑了啊兄弟。。国内浏览器其实和chromium没啥区别。。因为就是照抄的
var _img_url = canvas.toDataURL("image/png"); // 获取图片位置
这句怎么理解呀,路径是咋样的
var _img_url = canvas.toDataURL(&image/png&); // 获取图片位置
这句怎么理解呀,路径是咋样的
这个是创建图像,这个图像以DataURL形式(一个字符串)赋值给_img_url,只要图片等src=这个地址,这张图片就会渲染出来。
这个是创建图像,这个图像以DataURL形式(一个字符串)赋值给_img_url,只要图片等src=这个地址,这张图片就会渲染出来。
大神求请教,当我用css3drenderer这种方法加载全景图之后,在全景图内加载的模型就看不到了,但是加载模型不报错,请问是怎么回事?
大神求请教,当我用css3drenderer这种方法加载全景图之后,在全景图内加载的模型就看不到了,但是加载模型不报错,请问是怎么回事?
请问Demo中的图片是怎么生成的?有具体方法吗?
请问Demo中的图片是怎么生成的?有具体方法吗?
需要摄像头拍,有3D摄像头的,这个Facebook有实现,具体怎么整,很久没搞这一块了,建议你自行找资料了。
需要摄像头拍,有3D摄像头的,这个Facebook有实现,具体怎么整,很久没搞这一块了,建议你自行找资料了。
按照当前代码复制粘贴怎么什么都显示不出来?
按照当前代码复制粘贴怎么什么都显示不出来?
这个是15年写的了,现在版本已经变更很多了已经。这个我很久没研究了哈,建议你看一下手册。
@Clking[clking_586e70b875086] 这个是15年写的了,现在版本已经变更很多了已经。这个我很久没研究了哈,建议你看一下手册。
我已经落后了不止三年 o(╥﹏╥)o
我已经落后了不止三年 o(╥﹏╥)o
额,没这么严重,闻道有先后
@Clking[clking_586e70b875086] 额,没这么严重,闻道有先后
720全景可以么
720全景可以么
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。VRAY渲染疑难 2014版本为什么出小图是这样的 杂点噪点
19:48:44&&&来源:网络 &&&评论: 点击:
VRAY渲染疑难 2014版本为什么出小图是这样的 杂点燥点多
&VRAY渲染疑难 2014版本为什么出小图是这样的 杂点燥点多
试试勾选概率灯光,在全局开关里面
摄像机景深勾选关了~
相关热词搜索:
延伸阅读:
(window.slotbydup=window.slotbydup || []).push({
id: '5835113',
container: s,
size: '1010,90',
display: 'inlay-fix'
版权声明:除本站原创外,本站提供的教程和资源均收集整理自网络,其版权归原始作者或原始出处所有!如有侵权请联系管理员删除(QQ:)
本站提供的所有教程及模型素材等资料均用于免费分享,但是不可以盗链本站图片,也不可用于任何商业应用,否则后果自负.
版权所有:3Dmax吧网站(www.3dmax8.com)申请友情链接QQ:,要求百度PR4以上。已解决问题
3D室外效果图渲出来发灰怎么办??急用
浏览次数:4675
用手机阿里扫一扫
最满意答案
可以用PS后期处理的。
答案创立者
以企业身份回答&
正在进行的活动
生意经不允许发广告,违者直接删除
复制问题或回答,一经发现,拉黑7天
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题
扫一扫用手机阿里看生意经
问题排行榜
当前问题的答案已经被保护,只有知县(三级)以上的用户可以编辑!写下您的建议,管理员会及时与您联络!
server is ok3d max 建复杂模型,导入图片建是什么原理?_百度知道
3d max 建复杂模型,导入图片建是什么原理?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
要同时导入各个视图,对齐后在进行建模。也可以先建立一个盒子模型,然后在不同的面贴上不同的视图,所贴的图需要提前在ps中进行调整对位,然后在分别存储为各视图文件作为贴图对位使用,然后锁定,在进行建立模型。
这是建模基础吗?哪里有教程
网络上应该很多类似的教程,这也是入门的基础,比如汽车或者复杂的产品模型都需要这样作。
室内设计用学图片建模吗? 家具和普通室内场景都会。
如果是家具或者精细的模型 需要这样建模。其实按效果图正规的做法也需要导入在CAD中做好的三视图进行建模的。
采纳率:61%
来自团队:
你是新手吧?导入图片建模是最基本的学习建立3D模型的方法,因为,新手一般没有尺寸感,如果不把图片导进去的话,建出来的东西往往和实际的模型差别很多,为了力求精确和比例完善,所以把实际物体的图片导进去,就能最大程度地保证比例的准确。等熟练以后,有了空间感和尺寸感,就是不用导图片进去,也能建个八九不离十了。
为您推荐:
其他类似问题
您可能关注的内容
模型的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。后使用快捷导航没有帐号?
为什么3D渲小图的时候是好的,渲大图的时候场景就有好多白点和黑点??
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
3Dmax为什么我调试小图的时候渲染出来的效果很干净···但是渲染大图的时候缺出现很多白点呢??请问各位高手帮我解解是什么问题、要怎么去弄好!!谢谢···急··急··) f( x8 L% v, n# h- E
(163.06 KB, 下载次数: 1042)
09:53 上传
在线等啊&&哪位大神告诉我
1.把那两个选项勾上试试2.把发光贴图里的显示采样勾去掉试试
(20.07 KB, 下载次数: 973)
10:05 上传
1.把那两个选项勾上试试2.把发光贴图里的显示采样勾去掉试试
我试试看,我的采样的勾一直都是去掉的
1.把那两个选项勾上试试2.把发光贴图里的显示采样勾去掉试试
我试了你的方法,大图还是有白色光点
你的材质有3D默认材质 你换成VR材质就好了 。。这是你倒入模型的时候造成的
你细分不够 还有模糊调的太大
把原来的相机删了在打一个试试
把灯光的高光& &或者反射去掉& &你试一下& &
还有吧伽马值关了/ n8 v* h* ]& a, \}

我要回帖

更多关于 3D渲染步骤 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信