I used Skanect to scan my room down. The .ply file generated is like this:
0.614557 -0.0194625 -0.305274 -0.127814 -0.551592 0.824263 100 113 96
0.614418 -0.019946 -0.305417 -0.127814 -0.551592 0.824263 98 111 96
0.61429 0.00103368 -0.303381 0.0386538 -0.603242 0.796621 104 107 95
…
扫描用的工具叫Skanect,参见上一篇
导出的.ply文件大概是这样
0.614557 -0.0194625 -0.305274 -0.127814 -0.551592 0.824263 100 113 96
0.614418 -0.019946 -0.305417 -0.127814 -0.551592 0.824263 98 111 96
0.61429 0.00103368 -0.303381 0.0386538 -0.603242 0.796621 104 107 95
…
9 columns are x, y, z, xn(normal), yn, zn, r, g, b.
Took me a while to make it work because I didn’t know shit about Python itself or Maya Python. So if you’re in fog too I present you Python functions for Maya.
Notes:
Attributes have types, I forgot because Python fed me honey on this one. Stuck for a day.
emit() is buggy, it crashed the soul out of me when I used at=’rgbPP’ , use setParticleAttr() instead
Important, after importing, do ‘set current state to initial state’ and cache the first frame, otherwise the color will be gone next time you start it, this is some bullshit.
To hide part of the point cloud, select and cmds.setParticleAttr(at=’opacityPP’, fv=0).
[py]
## Maya Point Cloud (.xyz) Importer
## Format: X Y Z ,a ,a a, R, G, B for every line
## Page: http://axlarts.com/?p=1923
from maya import cmds
RES=100 # Only draw one particle for every RES lines in the file,
# in case of huge cloud but only need reference in the scene.
path=cmds.fileDialog2(ds=2,fm=1)[0]
f0=open(path)
n=0; pn=0
p0=cmds.nParticle()[1]
cmds.setAttr(p0+’.isDynamic’,0)
cmds.addAttr(p0,ln=’rgbPP’,dt=’vectorArray’)
while 1:
line=f0.readline().split(‘ ‘)
n+=1
if line[0]==”:
break
if n%10000==0:
print "%d lines %d particles\n" % (n, pn)
if n%RES!=0:
continue
rotted=False
xyz=[]
for doll in line:
try:
dollF=float(doll)
except ValueError:
rotted=True
print ‘(Warning) Invalid value %s in line%d: %s’ % (doll,n,line)
break
xyz.append(dollF)
if len(line)!=9:
rotted=True
if rotted:
continue
for a in range(6,9): #Just because it’s x y z bla bla bla r g b in my case
xyz[a]/=255
cmds.emit(object=p0,position=xyz[:3])
cmds.select(p0+’.pt[‘+str(pn)+’]’)
cmds.setParticleAttr(at=’rgbPP’, vv=xyz[6:9])
pn+=1
[/py]
Additional Python script to import particles, using only the first 3 numbers everyline as x,y,z and ignoring others.
There surely is way to make this more compatible but that’s too much effort..
[py]
## Maya Point Cloud (.xyz) Importer
## Format: X Y Z for every line
## Page: http://axlarts.com/?p=1923
from maya import cmds
RES=1 # Only draw one particle for every RES lines in the file,
# in case of huge cloud but only need reference in the scene.
path=cmds.fileDialog2(ds=2,fm=1)[0]
f0=open(path)
n=0; pn=0
p0=cmds.nParticle()[1]
cmds.setAttr(p0+’.isDynamic’,0)
cmds.addAttr(p0,ln=’rgbPP’,dt=’vectorArray’)
while 1:
line=f0.readline().split(‘ ‘)
n+=1
if line[0]==”:
break
if n%10000==0:
print "%d lines %d particles\n" % (n, pn)
if n%RES!=0:
continue
rotted=False
xyz=[]
for doll in line:
try:
dollF=float(doll)
except ValueError:
rotted=True
print ‘(Warning) Invalid value %s in line%d: %s’ % (doll,n,line)
break
xyz.append(dollF)
if len(line)<3:
rotted=True
if rotted:
continue
cmds.emit(object=p0,position=xyz[:3])
pn+=1
[/py]
9行分别是 x, y, z, xn, yn, zn, r, g, b,xn是normal方向。
所以用个脚本从文件读数据-添加粒子就行了。
搜到这里的同学估计和我半斤八两,所以我present你Maya Python函数表

效果图(脚本见文末)
小记:
添加attribute注意类型,Python让我忘了这茬了,卡了我半天。
emit()函数有bug,直接 at=‘rgbPP’ 的话会崩溃,要用setParticleAttr()
5/1/2013 Update:
导入以后要先set current state to initial state 然后存下首帧cache,不然颜色会丢掉。
不要的部分可以选中然后 cmds.setParticleAttr(at=’opacityPP’, fv=0) 隐藏。
[py]
## Maya Point Cloud (.xyz) Importer
## Format: X Y Z ,a ,a a, R, G, B for every line
## Page: http://axlarts.com/?p=1923
from maya import cmds
RES=100 # Only draw one particle for every RES lines in the file,
# in case of huge cloud but only need reference in the scene.
path=cmds.fileDialog2(ds=2,fm=1)[0]
f0=open(path)
n=0; pn=0
p0=cmds.nParticle()[1]
cmds.setAttr(p0+’.isDynamic’,0)
cmds.addAttr(p0,ln=’rgbPP’,dt=’vectorArray’)
while 1:
line=f0.readline().split(‘ ‘)
n+=1
if line[0]==”:
break
if n%10000==0:
print "%d lines %d particles\n" % (n, pn)
if n%RES!=0:
continue
rotted=False
xyz=[]
for doll in line:
try:
dollF=float(doll)
except ValueError:
rotted=True
print ‘(Warning) Invalid value %s in line%d: %s’ % (doll,n,line)
break
xyz.append(dollF)
if len(line)!=9:
rotted=True
if rotted:
continue
for a in range(6,9): #Just because it’s x y z bla bla bla r g b in my case
xyz[a]/=255
cmds.emit(object=p0,position=xyz[:3])
cmds.select(p0+’.pt[‘+str(pn)+’]’)
cmds.setParticleAttr(at=’rgbPP’, vv=xyz[6:9])
pn+=1
[/py]
另外附加只看每行前3个数字作为xyz,忽略其他的python脚本
当然可以并成一个了但是没那闲情..
[py]
## Maya Point Cloud (.xyz) Importer
## Format: X Y Z for every line
## Page: http://axlarts.com/?p=1923
from maya import cmds
RES=1 # Only draw one particle for every RES lines in the file,
# in case of huge cloud but only need reference in the scene.
path=cmds.fileDialog2(ds=2,fm=1)[0]
f0=open(path)
n=0; pn=0
p0=cmds.nParticle()[1]
cmds.setAttr(p0+’.isDynamic’,0)
cmds.addAttr(p0,ln=’rgbPP’,dt=’vectorArray’)
while 1:
line=f0.readline().split(‘ ‘)
n+=1
if line[0]==”:
break
if n%10000==0:
print "%d lines %d particles\n" % (n, pn)
if n%RES!=0:
continue
rotted=False
xyz=[]
for doll in line:
try:
dollF=float(doll)
except ValueError:
rotted=True
print ‘(Warning) Invalid value %s in line%d: %s’ % (doll,n,line)
break
xyz.append(dollF)
if len(line)<3:
rotted=True
if rotted:
continue
cmds.emit(object=p0,position=xyz[:3])
pn+=1
[/py]
References:
Legiano Casino Einzahlung https://79.pexeburay.com/index/d1?diff=0&utm_source=ogdd&utm_campaign=20924&utm_content=&utm_clickid=t4w48c4sowkskowc&aurl=https://searl.co/ritakroger454&an=&utm_term=&site=&pushMode=popup
References:
Legiano Casino Mobile images.google.md
References:
Legiano Casino Lizenz http://images.google.lv/url?q=http://l2top.co/forum/proxy.php?link=https://de.trustpilot.com/review/beyondjewellery.de
References:
Legiano Casino Kontakt http://www.ut2.ru
References:
Legiano Casino App wapcenter.yn.lt
References:
Legiano Casino Willkommensbonus https://metager.de/meta/settings?fokus=web&url=https://itapipo.ca/lucienneclemenhttps://metager.de/meta/settings?fokus=web&url=https://itapipo.ca/lucienneclemen</a
References:
Legiano Casino Willkommensbonus http://www.calvaryofhope.org
References:
Legiano Casino legal seaforum.aqualogo.ru
References:
Legiano Casino Bonus cocoleech.com
References:
Legiano Casino Mindesteinzahlung privatelink.de
References:
Legiano Casino Web App gta.ru
References:
Legiano Casino Kritik comita.spb.ru
References:
Legiano Casino Mindesteinzahlung 53.cholteth.com
References:
Ligiano Casino http://www.sv-mama.ru
References:
Legiano Casino Neukundenbonus https://chaturbate.com/
References:
Legiano Casino VIP http://forum-makarova.ru/proxy.php?link=https://illustrators.ru/away?link=https://de.trustpilot.com/review/der-wikinger-shop.de
References:
Legiano Casino Treueprogramm https://www.kerg-ufa.ru/
References:
Legiano Casino Video Review board-en.piratestorm.com
References:
Legiano Casino Alternative http://images.google.com.tr/url?sa=t&url=http://www.polosedan-club.com/proxy.php?link=https://de.trustpilot.com/review/der-wikinger-shop.de
References:
Legiano Casino Android http://images.google.cz/url?sa=t&url=http://wiki.opendesign.com/api.php?action=https://de.trustpilot.com/review/der-wikinger-shop.de
References:
Legiano Casino Mindesteinzahlung https://wellnessbeauty.ru/bitrix/redirect.php?event1=click_to_call&event2=&event3=&goto=https://linksminify.com/archer27c30825
References:
KingMaker einzahlung apple pay https://bion.ly
References:
Kingmaker Casino Konto erstellen https://cut.gl/jorgehelmick5
References:
KingMaker erste einzahlung bonus https://liy.ke
References:
Kingmaker casino einzahlen anleitung getshort.in
References:
Kingmaker casino banküberweisung einzahlen http://images.google.ch/url?sa=t&url=https://de.trustpilot.com/review/beyondjewellery.de
References:
Kingmaker casino 200% bonus einzahlen https://cm-us.wargaming.net
References:
KingMaker um echtes geld spielen google.com.ly
References:
Kingmaker Casino Bonusbedingungen http://toolbarqueries.google.com.vc
References:
KingMaker Casino 200% Einzahlungsbonus http://cse.google.by
References:
KingMaker konto aufladen bonus http://www.google.lk/url?sa=t&url=https://de.trustpilot.com/review/beyondjewellery.de
Ответственная игра — это комплекс подходов, ориентированных на защиту психологического и финансового равновесия участника.
Главная мысль состоит в том, что процесс должна восприниматься только как развлечение, а не как метод заработка.
Игроку рекомендуется предварительно определять ограничения по времени и бюджету и строго их придерживаться.
https://tltrock.ru/material/2026-06-29-kak-vybrat-onlayn-kazino-rukovodstvo-dlya-nachinayushchikh.html
Необходимо научиться замечать первые симптомы проблемного поведения, такие как желание отыграться и игнорирование обязанностями.
Платформы должны предоставлять инструменты ограничения: паузы, депозитные лимиты и возможность самоисключения.
Соблюдение этих рекомендаций позволяет удержать игру в комфортных границах, не нанося вреда своей психике и окружающим.
References:
Legiano Casino Anmelden maps.google.bs
References:
KingMaker krypto einzahlung http://maps.google.dj/
References:
Legiano Casino Mindesteinzahlung http://clients1.google.com.af/url?q=https://telegra.ph/Legiano-Casino-Offizieller-Markenauftritt-06-07
References:
KingMaker Casino Echtgeld Bonus google.ch
References:
KingMaker guthaben aufladen http://polsy.org.uk/
References:
Kingmaker Casino Alternativen https://mamavrn.ru/
References:
Legiano Casino Tischspiele clients1.google.ru
References:
Legiano Casino Willkommensbonus http://maps.google.rs
References:
KingMaker mindesteinzahlung http://toolbarqueries.google.bj/url?q=https://url.pixelx.one/jannettebruton
References:
Kingmaker Casino Limit toolbarqueries.google.co.kr
References:
Legiano Casino Test http://images.google.ps/url?sa=t&url=https://telegra.ph/Kontakt-Legiano-Casino-Support–Kundenservice-06-07
References:
Kingmaker casino ersteinzahlungsbonus code clients1.google.com.sa
References:
Legiano Casino Auszahlungslimit https://www.spbtalk.ru/proxy.php?link=https://wptavern.com/author/toedetail47/
References:
KingMaker einzahlung http://toolbarqueries.google.com.gt/
Сайты для 18+ могут служить источником сексуального образования, содействуя пользователям понимать свою сексуальность.
Такие платформы позволяют исследовать многообразие подходов в защищённом пространстве, снижая риск реальных последствий.
В парах совместный интерес может укреплять доверие и становиться поводом для честного диалога о фантазиях и границах.
фото анальный секс
References:
Legiano Casino Support cse.google.com.sb
References:
KingMaker Casino Einzahlung und Bonus http://clients1.google.com.gi/url?q=https://searl.co/ritakroger454
Осознанный гемблинг — это стратегия к игровым развлечениям, базирующийся на самоограничении и понимании последствий.
Она предполагает осознанное ограничение продолжительности и денег на игру.
Любой игрок обязан предварительно определять лимиты ставок и строго их придерживаться.
https://labdiz.ru/full/519-svyashchennik-usnuvshiy-zhertv-poluchit-srok-svyshe-pyati-desyatkov-let.htm