マテリアルを作成しオブジェクトに割り当てる
- 椅子の木目を作成したことを思い出しながら,新しいマテリアルを作成する(参考)
- 作成したマテリアルのカラーの右にあるチェッカーマークをクリック

- ファイルを選択する

- ファイルアトリビュートが開かれるので,フォルダボタンをクリックし,ファイルの場所を指定する

- 作成されたマテリアルを立方体にアサインする

- ビューのマテリアル表示モードをONにし,パースビューでテクスチャが反映される

- レンダリングするとこのようになる

(次へ)
Mayaで作成したオブジェクトにテクスチャ画像を貼り付ける,テクスチャマッピングを実習する.








(次へ)
ここではMayaのマテリアル設定の復習をします.1年次では実習していないプロシージャルテクスチャ(計算で生成したテクスチャ)を,木目で使用します.
マテリアル設定やレンダリングの設定について忘れてしまった方は,少し古いレジュメになりますがこちらを参考に.








Mayaの復習をしましょう.以前のレジュメも参考にしましょう.
【2019年度変更箇所】
デフォルトのレンダラーはArnoldになっていますが,Mayaソフトウェアでかまいません.
—-
ここではアトリエにありそうな丸椅子を作ります.
プロジェクトを作成しましょう.次に,ポリゴンの円柱を作成します.正確なサイズで入力したい場合には,□を選びプロパティを表示させる習慣をつけましょう.
Mayaはデフォルトで1ユニット1mと換算します.Unity等で読み込む場合は,このスケールが反映されます.













支援デバイスVer6コード
# ODEKAKE Beacon 2018ver4
from microbit import *
#import microbit
import music
import radio
import os
display.scroll('RadV6')
radio.config(channel=10, power=5, length =64)#BLE init length
radio.on()#BLE ON
btnChk = False
myID = 1
grCount = 1
grChk = False
oneTime = False
missing = False
timerA = 0
timerB = 0
config = '0,0'#myID,grCount,
tune1 = ["D4:1"]
tune2 = ["E4:1"]
tune3 = ["F4:1"]
timB = 30000
interval = 3000#change to 1sec Feb.16
#IDlist = []
#IDlist2 = []
idDic = {}#ID + time dictionary
#File read
if 'config.txt' in os.listdir():
with open('config.txt') as my_config:
conftxt = my_config.read()
conf = conftxt.split(',')#split by commma to list
myID = int(conf[0])#myID read and set
grCount = int(conf[1])#my grCount read and set
while True:
if button_a.is_pressed() and button_b.is_pressed():
##setingMode
if btnChk is False:
btnChk = True
display.scroll('SET')
display.scroll('ID=' + str(myID))
elif btnChk is True:
btnChk = False #end set mode
shakeChk = False #end shake mode
display.show(Image.YES)
elif button_a.is_pressed():
if btnChk is True and grChk is False:#ID count mode
if myID < 20:
myID += 1
else:
myID = 0
display.scroll('ID=' + str(myID) ,delay = 80)
#sleep(200)
#display.clear()
elif btnChk is False and grChk is True:#group count mode
if grCount < 20:
grCount += 1
else:
grCount = 0
display.scroll('GR=' + str(grCount) ,delay = 80)
else:#normal mode
if(idDic):
mList2 = []#initialize and clear
for k, v in idDic.items():
sabun2 = timA - v
if sabun2 < 10000:#if 20sec no access
mList2.append(k)
nagasa = int(len(mList2)) + 1#own ID add
display.scroll(str(nagasa), delay = 80)
if nagasa == int(grCount):
display.scroll('OK!', delay = 80)
missing = False
elif nagasa < int(grCount):
display.show(Image.SAD)
else:
display.scroll('??', delay = 100)
##music.play(tune2)
radio.send(str(myID) + ',' + str(grCount) + ',nohelp,noset')
else:
display.show(Image.DUCK)
sleep(500)
display.clear()
elif button_b.is_pressed():
if btnChk is False and grChk is False:#HELP SEND
radio.config(power=7)#HelpMode
radio.send(str(myID) + ',' + str(grCount) + ',HELP' + ',noset')
radio.config(power=5)#HelpMode
display.scroll('HELP')
sleep(800)
display.clear()
elif btnChk is False and grChk is True:#end gr set mode
btnChk = False #end set mode
grChk = False #end shake mode
radio.send(str(myID) + ',' + str(grCount) + ',nohelp' + ',set')
display.show(Image.YES)
sleep(500)
display.clear()
#File Save
saveConfig = str(myID) + ',' + str(grCount)
with open('config.txt', 'w') as my_conf:#save list my_conf
my_conf.write(saveConfig)
#with open('gr.txt', 'w') as gr_id:
# gr_id.write(str(grCount))
elif btnChk is True and grChk is False:#end id set mode
btnChk = False
grChk = True#to Group set mode
display.show(Image.YES)
sleep(500)
display.clear()
display.scroll('GR=' + str(grCount))
#else:
#display.scroll('')
#radio message 'myID,grCount,HELP'
try:
s = radio.receive()
if(s):
sList = s.split(',')#split by , to list
if sList[2] == 'HELP':
display.scroll('!')
music.play(music.BADDY)
display.show(Image.SAD)
sleep(3000)
display.clear()
elif btnChk is False and grChk is False:
if sList[3] == 'set':
grCount = sList[1]
saveConfig = str(myID) + ',' + str(grCount)
display.scroll('GR=' + str(grCount))
with open('config.txt', 'w') as gr_id:
gr_id.write(saveConfig)
#elif sList[2] == 'nohelp' and sList[3] == 'noset':
else:#recieve ID check
if(not myID == sList[0]):#without own device
#time check
nowTime = running_time()
if(not idDic.get(sList[0])):#not in dictionary add ID and time
updValue = {sList[0] : nowTime}
idDic.update(updValue)
#music.play(tune3)
else:
updValue = {sList[0]:nowTime}
idDic.update(updValue)
except ValueError:#PacketError
display.show(Image.DUCK)
radio.reset()
sleep(200)
radio.config(channel=10, power=5, length =64)
display.clear()
#send Beacon interval time
timA = running_time()
if timA > timB:
#del IDlist[:]#initialaize list
if btnChk is False and grChk is False:
radio.send(str(myID) + ',' + str(grCount) + ',nohelp,noset')
#display.scroll(str(timA))
timB = timA + interval
#display.show(Image.PITCHFORK)
#sleep(100)
#display.clear()
#music.play(tune1)
if(idDic):
mList = []#initialize and clear
#mList.clear()#need()?
for k, v in idDic.items():
sabun2 = timA - v
if sabun2 > 200000:#200sec
mList.append(k)
if(mList):
ids = ''
for t in mList:
ids += t + '_'
#display.scroll('ID=' + ids + 'missing', delay = 200)
if missing is False:
music.play(music.POWER_DOWN)
missing = True
display.scroll('ID' + ids + 'missing')
sleep(5000)
#sleep(100)
micro:bitでDictionaryつかえるやん,,,数時間無駄にした
from microbit import *
myDict = {
'id':1000,
'id2':2000
}
while True:
if button_a.is_pressed():
cat = myDict.get('id')
display.scroll(str(cat))
#display.show(Image.HEART)
sleep(2000)
if button_b.is_pressed():
cat = myDict.get('id2')
display.scroll(str(cat))
#display.show(Image.HEART)
sleep(2000)
値を更新と追加は
inu = {'key2':400}
myDict.update(inu)
Dictionaryの中身をチェックするには(Key,Valueの両方)
for k, v in myDict.items():
これでk にkeyがvにValueが入る
スクロール速度速く
display.scroll('cat', delay = 100)
お出かけサポートシステム(ver2くらい あまり動作しない)
# Add your Python code here. E.g.
from microbit import *
#import microbit
import music
import radio
import os
display.scroll('RadioV1')
radio.config(channel=10, power=4)#BLE init
radio.on()#BLE ON
btnChk = False
myID = 1
grCount = 1
grChk = False
oneTime = False
timerA = 0
timerB = 0
#tune = ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4","E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]
tune2 = ["E4:1"]
#File read
if 'id.txt' in os.listdir():
with open('id.txt') as my_id:
myidtxt = my_id.read()
myID = int(myidtxt)
if 'gr.txt' in os.listdir():
with open('gr.txt') as gr_id:
mygridtxt = gr_id.read()
grCount = int(mygridtxt)
while True:
if button_a.is_pressed() and button_b.is_pressed():
##setingMode
if btnChk is False:
btnChk = True
display.scroll('SET')
display.scroll('ID=' + str(myID))
elif btnChk is True:
btnChk = False #end set mode
shakeChk = False #end shake mode
display.show(Image.YES)
elif button_a.is_pressed():
if btnChk is True and grChk is False:#ID count mode
if myID < 20:
myID += 1
else:
myID = 0
display.scroll('ID' + str(myID))
#sleep(200)
#display.clear()
elif btnChk is False and grChk is True:#group count mode
if grCount < 20:
grCount += 1
else:
grCount = 0
display.scroll('GR' + str(grCount))
else:
music.play(tune2)
elif button_b.is_pressed():
if btnChk is False and grChk is False:
radio.config(power=7)#HelpMode
radio.send('HELP')
radio.config(power=4)#HelpMode
display.scroll('HELP')
sleep(800)
display.clear()
elif btnChk is False and grChk is True:#end gr set mode
btnChk = False #end set mode
grChk = False #end shake mode
radio.send(str(grCount))
display.show(Image.YES)
sleep(500)
display.clear()
#File Save
with open('id.txt', 'w') as my_id:
my_id.write(str(myID))
with open('gr.txt', 'w') as gr_id:
gr_id.write(str(grCount))
if btnChk is True and grChk is False:#end id set mode
btnChk = False
grChk = True#to Group set mode
display.show(Image.YES)
sleep(500)
display.clear()
display.scroll('GR=' + str(grCount))
#else:
#display.scroll('')
s = radio.receive()
if s == 'flash':
display.scroll('Recieve')
elif s == 'HELP':
display.scroll('!')
music.play(music.RINGTONE)
display.show(Image.SAD)
sleep(3000)
display.clear()
elif(s):
if btnChk is False and grChk is False:
grCount = int(s)
display.scroll('GR=' + str(grCount))
with open('gr.txt', 'w') as gr_id:
gr_id.write(str(grCount))
# display.show(Image.HEART)
if running_time() > timerA:
#sendID
sleep(100)
急ぎの案件で,いろいろ試したけど,結局マクロで強引に動かす
データが綺麗にそろっていたからできただけにすぎない
10数万行×7列で約50分の実行時間
Sub Macro3()
'
' Macro3 Macro
'
Sheets("Sheet1").Select
Dim i As Long
Dim j As Long
Dim h As Long
h = 2
i = 2
For i = 2 To 515858 Step 66
j = i + 65
Sheets("Sheet1").Select
Range("C" & i & ":C" & j).Select
ActiveCell.Offset(0, 0).Activate
Selection.Copy
Sheets("Sheet2").Select
Range("B" & h).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Sheet1").Select
Range("D" & i & ":D" & j).Select
ActiveCell.Offset(0, 0).Activate
Selection.Copy
Sheets("Sheet2").Select
Range("BP" & h).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Sheet1").Select
Range("E" & i & ":E" & j).Select
ActiveCell.Offset(0, 0).Activate
Selection.Copy
Sheets("Sheet2").Select
Range("ED" & h).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Sheet1").Select
Range("F" & i & ":F" & j).Select
ActiveCell.Offset(0, 0).Activate
Selection.Copy
Sheets("Sheet2").Select
Range("GR" & h).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Sheet1").Select
Range("G" & i & ":G" & j).Select
ActiveCell.Offset(0, 0).Activate
Selection.Copy
Sheets("Sheet2").Select
Range("JF" & h).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
h = h + 1
Next
End Sub
アパレルに特化させています
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>Clarifaiサンプル</title>
</head>
<body>
<h1>Clarifaiサンプル</h1>
<script type="text/javascript" src="https://sdk.clarifai.com/js/clarifai-latest.js"></script>
<script type="text/javascript" src="const.js"></script>
<form>
<input type="file" id="files">
</form>
<div id="result"></div>
<p id="textul"></p>
<script type="text/javascript">
var ul = document.getElementById('textul');
var li;
//test2
//function poop() {
document.getElementById('files').addEventListener('change', function(){
//document.querySelector('input').addEventListener('change', function(){
var reader = new FileReader();
//reader.readAsDataURL(file);
reader.onload = function() {
var imageData = this.result;
var imageData2 = this.result;
document.getElementById('result').innerHTML = '<img src="'+ imageData +'" />';
imageData = imageData.replace(/^data:image\/(.*);base64,/, '');
doTheyEvenLift(imageData);
};
reader.readAsDataURL(this.files[0]);
}, false);
//}
function doTheyEvenLift(image) {
app.models.predict('e0be3b9d6a454f0493ac3a30784001ff', {base64: image}).then(function(r) {
console.log(r.outputs[0].data.concepts);
var mycount = r.outputs[0].data.concepts.length;
for(var i=0; i < mycount; i++){
li = document.createElement("li");
var p = r.outputs[0].data.concepts[i].value;
p = p * 100;
li.textContent = r.outputs[0].data.concepts[i].name +"_"+ p + "%";
//li.textContent = r.outputs[0].data.concepts[i].value;
ul.appendChild(li);
}
}, function(err) {
console.log(err);
});
}
///////test2
</script>
</body>
</html>
実働サンプル(毎回リロード)
急ぎなのでメモ ボタンで追加できる
public void addBtn(){
NCMBObject posObj = new NCMBObject ("posObj");
//DicAdd test
posObj .Add("x", "3.2");
posObj .Add("y", "1.0");
posObj .Add("z", "0.2");
posObj.SaveAsync ((NCMBException e) => {
if (e != null) {
//エラー処理
} else {
//成功時の処理
}
});
}